.htaccess将所有子域重定向到一个目录,并保留url

时间:2014-02-07 17:42:40

标签: apache .htaccess mod-rewrite redirect

我花了大部分时间在谷歌上搜索这个,并且似乎无法让它工作(我对htaccess有点生疏!)

基本上我有一个网站,每个注册的用户都有一个子域名(例如userA.example.com,userB.example.com)

我一直在使用php脚本注册这些子域名,但现在有超过500个(!)子域名,我正在转移到新服务器,并认为我可以实现一个新系统。

我基本上喜欢附加到域的任何子域指向单个文件夹并将原始URL保留在浏览器的地址栏中,这样我就不必使用服务器资源为每个用户注册新的子域名!

我已经为此设置了所需的通配符DNS。

我使用以下代码执行重定向,但地址仍然更改:

RewriteEngine on
RewriteBase /
RewriteCond %{HTTP_HOST} !^www\.XXXX\.com$ [NC]
RewriteCond %{HTTP_HOST} ^([^.]+)\.XXXX\.com$ [NC]
RewriteCond %{SERVER_PORT} =80
RewriteRule ^(.*)$ http://XXXX.com/frontend/ [L,NC]

这确实重定向非常好,但我无法找到一种方法来保留带有子域的原始网址。

感谢您的帮助

1 个答案:

答案 0 :(得分:2)

您需要先通过Apache配置启用mod_proxy,否则由于您在此处更改域名,因此网址会发生变化。

启用mod_proxy后,请尝试以下规则:

RewriteEngine on

RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteCond %{HTTP_HOST} ^([^.]+)\.XXXX\.com$ [NC]
RewriteCond %{HTTPS} off
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ http://XXXX.com/frontend/ [L,NC,P]