php - .htaccess 动态子域
问题描述
我已经把头发拉了一段时间了。我想知道是否有一种方法可以使用 .htaccess 创建动态子域?我现在处于沙盒环境中,但我想做这样的事情:
awebsite.co.uk -> 直接到 index.php *.awebsite.co.uk -> 直接到 init.php
到目前为止,我已经成功地完成了这项工作,但是,当涉及到参数时,我面临着一个真正的问题。
*.adomain.co.uk/page 抛出 404 或 500。我通过将自定义 404 设置为 init.php 来实现它
我遇到的问题是我有一条规则可以从 url 中隐藏 .php,因此 adomain.co.uk/apage 将显示 page.php,但是当我尝试完成上述操作时,这会变得一团糟。有人可以在这里指出我正确的方向吗?我有一个通配符 A 记录等。但我无法使用我的托管服务提供商设置 ServerAlias。
非常感谢
更新:.htaccess(当前)
Options -MultiViews
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.php [NC,L]
ErrorDocument 404 /sandbox/init.php
使用 PHP 处理应该像
$splitDomain = explode('.', $_SERVER['SERVER_NAME']);
// TODO: remove if not sandbox
$ReqPage = str_replace('/sandbox/', '', $_SERVER['REQUEST_URI']);
//$ReqPage = str_replace('/', '', $_SERVER['REQUEST_URI']);
解决方案
默认行为是重定向到 index.php,因此您只需要捕获非 www 子域。
怎么样:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^(.+)\.example\.com$ [NC]
RewriteCond %{HTTP_HOST} !^www\.example\.com$ [NC]
RewriteRule ^ http://www.example.com/init.php [L,R]
或者:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^(.+)\.example\.com$ [NC]
RewriteCond %{HTTP_HOST} !^www\.example\.com$ [NC]
RewriteRule ^ init.php [L]
第一个将重定向到 init.php (您所要求的),第二个将在没有重定向的情况下调用 init.php (您的意思)。
推荐阅读
- python - 不知道如何删除小部件,然后在 tkinter 中添加新小部件
- android - Jetpack Compose 将 PorterDuffMode 应用于图像
- qt - 没有规则可以制作“ui_display.h”所需的目标“QtCharts/QChartView>”。停止
- java - Flink - 将 pojo 序列化到 Kafka 接收器
- laravel - Laravel 8 全新安装,带有 livewire npm install && npm run dev 错误
- automation - 如何编写集成测试来检查 cron 作业是否在正确的时间运行并执行正确的工作?
- mysql - 来自两个表的两个结果行,内部连接到一行 MySQL
- javascript - html href 以某种方式确定了我的 css :focus 同一标签的伪属性。做对了
- python - discord.py 列表对象没有属性名
- bash - 使用变量时找不到命令