我确信我在做一些愚蠢的事情,但我似乎无法弄明白它是什么。
我无法理解为什么{REQUEST_URI}的RewriteCond没有评估为true,从而阻止了RewriteRule的触发。相反,给出以下网址,规则会触发,用户始终会被带到https://www.diffsite.com 。
真的很感激任何帮助 - 并提前感谢。
网址:
http://www.regularsite.com/page-name/
.htaccess代码:
# 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
答案 0 :(得分:0)
%{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
内部斜杠内部不匹配。