我使用mod重写规则将用户从通配符子域重定向到特定子目录,同时不更改地址栏URL。我已经完全成功了,但我还需要在内部使用通配符子域名。
例如,如果有人尝试xyz.domain.com
我正在重定向他说domain.com/abc
,我还需要xyz
供内部使用。
我尝试$_SERVER['SERVER_NAME']
但它返回当前的子目录地址。还试过$_SERVER['HTTP_REFERER']
但没有成功。所以,如果有人可以帮忙请。
我的.htaccess代码如下:
RewriteEngine on
RewriteCond %{HTTP_HOST} ^(.*)\.domain\.com$
RewriteRule ^(.*)$ "http\:\/\/domain\.com\/project\/" [P,NC,QSA]
答案 0 :(得分:1)
我之前的回答不适用于动态子域。所以在你的情况下,它不会工作。
当我测试你的.htaccess规则时,我的服务器设置一个sqrt(pow(x1-x2)+pow(y1-y2))
变量,其值为原始主机“xyz.domain.com”。
也许这可能有所帮助。
回答静态特定子域;
在重定向条件之前将这些行放到.htaccess
$_SERVER['HTTP_X_FORWARDED_HOST']
然后您可以在PHP代码中使用RewriteCond %{HTTP_HOST} ^xyz.domain.com(.*)$ [NC]
RewriteRule .* - [E=internalSubdomain:xyz]
和$_SERVER['internalSubdomain']