我有以下mod_rewrite规则从site.com重定向到www.site.com:
RewriteCond %{HTTP_HOST} ^example\.com [NC]
RewriteRule ^(.*)$ http://example.com/$1 [R=permanent,L] .
我需要从此规则中排除以/ yandex_market
开头的网址RewriteCond %{HTTP_HOST} ^example\.com [NC]
RewriteCond %{REQUEST_URI} !^/yandex_market.*$ [NC]
RewriteRule ^(.*)$ http://example.com/$1 [R=permanent,L] .
但是规则仍然适用于以/ yandex_market开头的网址如何解决?
答案 0 :(得分:1)
问题是您的第二条规则会将/yandex_market/foo
URI重写为/index.php?module=YandexPurchaseView&type=foo
,从而使RewriteCond %{REQUEST_URI} !^/yandex_market.*$ [NC]
条件成功。您需要使用%{THE_REQUEST}
变量作为您的条件,并且不会因应用重写规则而发生变化。
保持这样的规则:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^example\.com [NC]
RewriteCond %{THE_REQUEST} !/yandex_market [NC]
RewriteRule ^(.*)$ http://www.example.com/$1 [R=301,NE,L]
RewriteRule ^yandex_market/(.+)$ index.php?module=YandexPurchaseView&type=$1 [L,NC,QSA]