【问题标题】:REQUEST_URI RewriteCond SyntaxREQUEST_URI RewriteCond 语法
【发布时间】: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

【问题讨论】:

    标签: regex wordpress apache .htaccess mod-rewrite


    【解决方案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 中不匹配。

    【讨论】:

    • 谢谢!抱歉,在这里标记答案需要一段时间。出于某种原因,我没有看到已发布的答案(或评论)。不过再次感谢。
    猜你喜欢
    • 1970-01-01
    • 2020-04-05
    • 2012-09-10
    • 2018-01-02
    • 1970-01-01
    • 1970-01-01
    • 2017-09-20
    • 1970-01-01
    • 2016-10-16
    相关资源
    最近更新 更多