我一直试图用.htaccess / modrewrite解决问题几个小时了,但我真的无法弄清楚问题是什么。
# Rule 1
RewriteCond %{HTTP_HOST} ^www\.domain\.nl.*$
RewriteRule (.*) http://domain.nl/$1
# Rule 2
RewriteCond %{HTTP_HOST} ^www.([a-z0-9]*?)\.domain\.nl.*$
RewriteRule (.*) http://%1.domain.nl/$1
# Rule 3
RewriteCond %{HTTP_HOST} ^([a-z0-9]+?)\.domain\.nl(.*)$
RewriteRule (.*) http://domain.nl/%1/$1
以下网址被正确重写:http://www.static.domain.nl/style/file.css,http://static.domain.nl/style/file.css和http://domain.nl/static/style/file.css,全部改为http://domain.nl/static/style/file.css
但对我来说这个结果似乎是完全随机的:http://www.domain.nl/static/style/file.css变成了http://domain.nl/www/http://domain.nl/static/style/file.css。
我认为这个网址应该与规则#1匹配,这应该会导致重定向(例如跳过规则#2和#3)。然而,似乎规则#3以某种方式匹配此URL并导致非常奇怪的重写。
非常引人注目的观察:如果删除规则#3只剩下#1和#2,它就会正常工作('www'被移除,其余部分保持不变)。
我根本不知道发生了什么,有什么线索?
非常感谢!
答案 0 :(得分:1)
我认为跳过规则3但规则#1上的$ 1全部搞乱。
尝试改变它。
答案 1 :(得分:1)
你的.htaccess规则是这样的:
# Rule 1
RewriteCond %{HTTP_HOST} ^www\.domain\.nl
RewriteRule ^ http://domain.nl%{REQUEST_URI} [L,R=301]
# Rule 2
RewriteCond %{HTTP_HOST} ^www.([a-z0-9]*)\.domain\.nl
RewriteRule ^ http://%1.domain.nl%{REQUEST_URI} [L,R=301]
# Rule 3
RewriteCond %{HTTP_HOST} ^([a-z0-9]*)\.domain\.nl
RewriteRule ^ http://domain.nl/%1%{REQUEST_URI} [L,R=301]