我正在研究重写规则。每次拨打移动网站的电话都应该重定向到非移动版本(或者在我的示例中,谷歌),除了几页。这必须在几个环境中工作,但它们不是问题(我可以看到)。
我有什么:
RewriteCond %{HTTP_HOST} m\.(local\.|lcl\.|dvl\.|uat\.|)testsite\.be$
RewriteCond %{REQUEST_URI} !^/categoryOne
RewriteCond %{REQUEST_URI} !^/categoryTwo
RewriteRule (.*) http://www.google.be/ [L,R=301]
如果我上网:http://m.lcl.testsite.be/categoryOne我会被重定向......即使http://htaccess.madewithlove.be/说我不应该这样做。
所以我简化了:
RewriteCond %{REQUEST_URI} !^/categoryOne
RewriteRule (.*) http://www.google.be/ [L,R=301]
http://m.lcl.testsite.be/categoryOne
- >我被重定向
RewriteCond %{REQUEST_URI} ^/categoryOne
RewriteRule (.*) http://www.google.be/ [L,R=301]
http://m.lcl.testsite.be/categoryOne
我被重定向(这很好)。
http://m.lcl.testsite.be/randomOtherCategory
- >我没有被重定向。
对我而言,看起来被否定的陈述被忽略了,考虑到我在项目的其他地方使用它,这很奇怪。
有什么见解?
答案 0 :(得分:1)
.htaccess中可能还有其他规则将REQUEST_URI
更改为其他内容并导致基于否定的条件通过。
请改为尝试:
RewriteCond %{THE_REQUEST} !/categoryOne
RewriteRule ^ http://www.google.be/ [L,R=301]
THE_REQUEST
变量在其他规则之后不会更改其值。