我花了大部分时间在谷歌上搜索这个,并且似乎无法让它工作(我对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]
这确实重定向非常好,但我无法找到一种方法来保留带有子域的原始网址。
感谢您的帮助
答案 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]