删除.htaccess不匹配/重定向的'www'

时间:2011-06-29 15:00:06

标签: .htaccess redirect

我一直试图用.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.csshttp://static.domain.nl/style/file.csshttp://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'被移除,其余部分保持不变)。

我根本不知道发生了什么,有什么线索?

非常感谢!

2 个答案:

答案 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]