.htaccess 动态子域

.htaccess dynamic subdomains

我已经为此烦恼了一段时间了。我想知道是否有一种方法可以使用 .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 ^([^\.]+)$ .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,因此您只需要捕获 non-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 而没有重定向(你的意思)。