我用mod_rewrite获得了apache2,我也可以访问该站点的.htaccess。
我希望网址profile.domain.com/username
重定向到www.domain.com/profiles/php?user=username
,但保持网址为profile.domain.com/username
。我已经有一个通配符设置来捕获所有子域。我正在尝试使用:
RewriteCond %{HTTP_HOST} ^profile\.domain\.com$ [NC]
RewriteRule ^(.+)$ http://www.domain.com/profiles/php?user=%1 [R=301,L]
但是它将网址更改为http://www.domain.com/profiles/php?user=
并且从未捕获用户名。另外,我不希望它更改我希望它保留的网址profile.domain.com/username
答案 0 :(得分:0)
你的规则几乎是正确的。 %1
替换为上一个RewriteCond
中的第一个捕获组。由于没有第一个捕获组,它被......替换。您想要使用$1
。它由RewriteRule
中的第一个捕获组替换。
你犯的第二个错误是使用R
- 标志进行外部重定向。删除该标志,并删除域名,并将其视为内部重写。确保清空浏览器的缓存,因为它会记住'你做的外部重定向,而不是使用你有的新重写。
你最终会:
RewriteCond %{HTTP_HOST} ^profile\.domain\.com$ [NC]
RewriteRule ^(.+)$ /profiles/php?user=$1 [L]