我已接近实现目标,但我无法找到解决问题的正确方法。
我为我的通配符子域编写了以下规则:
#remove www.
RewriteCond %{HTTP_HOST} ^www\.domain\.com$ [NC]
RewriteRule ^(.*)$ http://domain\.com/$1 [R=301,L]
#rewrite subdomains to /club/<clubname as defined by subdomain>/<whatever was here before>
RewriteCond %{HTTP_HOST} ^(.+)\.domain\.com$ [NC]
RewriteRule ^(.*)$ http://domain.com/club/%1/$0 [NC,L]
这非常接近我的要求,即如果我转到http://alpha.domain.com/some/string/here,则网址会被重写为http://domain.com/club/alpha/some/string/here
然而
我希望浏览器中的网址仍然像原始网址
非常感谢提前
编辑:我尝试过将PT添加到最终规则,但这不起作用,我收到400错误
EDIT2 :对于任何有兴趣的人,我放弃了这一行调查,而是使用php来阅读子域中的文字。
答案 0 :(得分:1)
如果 www.example.com 子域使用与 example.com 域相同的虚拟主机,则可以使用相对路径来使用内部重写:
RewriteCond %{HTTP_HOST} ^(.+)\.example\.com$ [NC]
RewriteCond $0 !^club/
RewriteRule ^(.*)$ club/%1/$0 [NC,L]
否则你需要一个代理:
RewriteCond %{HTTP_HOST} ^(.+)\.example\.com$ [NC]
RewriteRule ^(.*)$ http://example.com/club/%1/$0 [NC,L,P]