我有一个简单的htaccess重定向,可以将访问者从website.com/promotions发送到website.com/go/promotions。如果我使用下面的代码,我会得到一个重定向循环错误:
RewriteEngine on
RewriteCond %{REQUEST_URL} !^go$
RewriteRule promotion/index.html go/promotion/index.html [R,L,NC]
如果请求网址包含“go”但是它似乎没有工作,RewriteCond应该通过不重定向来阻止循环。
此外,我正在尝试设置正则表达式,以便将promotion / anypage.html重定向到go / promotion / anypage.html。我尝试了以下代码,但它不匹配任何东西:
RewriteEngine on
RewriteCond %{HTTP_HOST} !^go$
RewriteRule ^promotion/(.*)$ go/promotion/$1 [R,L,NC]
有没有人知道为什么这些块中的任何一个都无法正常工作?
干杯
答案 0 :(得分:2)
%{REQUEST_URL}
不是你可以匹配的var,你可能会想到%{REQUEST_URI}
,但它以一个前导斜杠开头,所以^go
永远不会匹配任何东西。
您只需要一条规则:
RewriteEngine On
RewriteRule ^/?promotion/(.*)$ /go/promotion/$1 [R,L]
或者您可以使用mod_alias:
Redirect /promotion/ /go/promotion/
答案 1 :(得分:1)
您正在检查整个网址是否只是“自行”,而不是:
RewriteEngine on
RewriteCond %{REQUEST_URI} !^/?go/
RewriteRule promotion/index.html go/promotion/index.html [R,L,NC]