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

RewriteCond %{REQUEST_URI}

RewriteCond %{REQUEST_URI}

RewriteCond REQUEST_URI - ^ 没有按预期工作

对于SSL,将http:转发到https:

Nginx伪静态处理,高手进来,帮我处理下。