REQUEST_URI RewriteCond 语法
Posted
技术标签:
【中文标题】REQUEST_URI RewriteCond 语法【英文标题】:REQUEST_URI RewriteCond Syntax 【发布时间】:2014-07-27 05:44:30 【问题描述】:我确定我在这里做了一些愚蠢的事情,但我似乎无法弄清楚它是什么。
我不明白为什么 REQUEST_URI 的 RewriteCond 没有评估为真,从而阻止了 RewriteRule 触发。取而代之的是,给定以下 url,规则触发并且用户总是被带到https://www.diffsite.com。
任何帮助将不胜感激 - 并提前致谢。
网址:
http://www.regularsite.com/page-name/
.ht 访问代码:
# Use php5.4 as default
AddHandler application/x-httpd-php54 .php
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %HTTP_USER_AGENT (iphone|ipod|android|symbian|windows\phone|blackberry|iemobile|opera\ mobile|palmos|webos|googlebot-mobile) [NC]
RewriteCond %REQUEST_URI !^page-name/ [NC]
RewriteRule ^(.*)$ https://www.diffsite.com/ [L,R=302]
RewriteRule ^index\.php$ - [L]
RewriteCond %REQUEST_FILENAME !-f
RewriteCond %REQUEST_FILENAME !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
【问题讨论】:
【参考方案1】:%REQUEST_URI
始终匹配以正斜杠 /
开头的 URI,因此这对您有用:
RewriteCond %REQUEST_URI !^/page-name/ [NC]
但是在您的规则中 RewriteCond %REQUEST_URI
甚至不需要,因为您可以在 RewriteRule
本身中执行此否定:
RewriteCond %HTTP_USER_AGENT (iphone|ipod|android|symbian|windows\phone|blackberry|iemobile|opera\ mobile|palmos|webos|googlebot-mobile) [NC]
RewriteRule !^page-name/ https://www.diffsite.com/ [NC,L,R=302]
不是.htaccess
中的前导斜杠在RewriteRule
中不匹配。
【讨论】:
谢谢!抱歉,在这里标记答案需要一段时间。出于某种原因,我没有看到已发布的答案(或评论)。不过再次感谢。以上是关于REQUEST_URI RewriteCond 语法的主要内容,如果未能解决你的问题,请参考以下文章
当 REQUEST_URI 与 htaccess apache2 不匹配时 RewriteCond