1

这是我的 .htaccess

RewriteEngine On
RewriteCond %{REQUEST_URI} ^/index.php$
RewriteCond %{QUERY_STRING} ^$
RewriteCond %{HTTP_REFERER} !^http://shop.com/index.php?controller=authentication&back=my-account [NC]
RewriteRule (.*) http://shop.com/index.php?id_category=12&controller=category [R=301,L]

我想 :

  • index.php被重定向到index.php?id_category=12&controller=category.
  • 如果Referer等于http://shop.com/index.php?controller=authentication&back=my-account

index.php似乎应该创建异常的第三个 RewriteCond与Referer等于时的请求不匹配http://shop.com/index.php?controller=authentication&back=my-account。因此,RewriteRule 被考虑在内,而它不应该被考虑在内。

这种行为让我认为%{HTTP_REFERER}URL 中不包含参数(在本例中为:)id_category=12&controller=category

4

1 回答 1

1

确实如此。你只需要逃避问号。尝试这个:

RewriteCond %{HTTP_REFERER} !^http://shop.com/index.php\?controller=authentication&back=my-account [NC]
于 2012-12-04T16:29:24.393 回答