移除';www';与.htaccess不匹配/重定向

移除';www';与.htaccess不匹配/重定向,.htaccess,redirect,.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/$

几个小时以来,我一直在尝试解决.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
以下url已正确重写:、和,全部为

但对我来说,这个结果似乎完全是随机的:变成

我认为这个url应该与规则#1匹配,这应该会导致重定向(因此跳过规则#2和#3)。然而,规则#3似乎以某种方式匹配了这个url,并导致了一个非常奇怪的重写

非常惊人的观察结果:如果规则3被删除,只剩下第1和第2条,它就会正常工作(“www”被删除,其余部分保持不变)

我完全不知道发生了什么,有什么线索吗


非常感谢

我想第3条规则被跳过了,但第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]

你好DonCallisto非常感谢您的回复。我认为$1引用了重写后的(.*)规则,该规则应该是后面的任何内容,因此理论上应该是可行的。视觉理论不起作用:它不可能是唯一的规则1,因为删除规则3会使它起作用,所以规则3必须与之相关……太棒了!不确定我的有什么问题,但不管怎样,它是有效的@马克:很高兴它成功了。主要问题是代码中缺少
[L,R=301]
。要执行外部重定向,您将
R
标记,并且
L
您需要将一条规则标记为最后一条规则。