这是我的.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
。http://shop.com/index.php?controller=authentication&back=my-account
,似乎第三个RewriteCond,它应该创建异常,当Referer等于index.php
时,它与http://shop.com/index.php?controller=authentication&back=my-account
的请求不匹配。因此,RewriteRule被考虑在内,而它不应该。
这种行为让我觉得%{HTTP_REFERER}
在网址中没有包含参数(在这种情况下:id_category=12&controller=category
)。
答案 0 :(得分:1)
确实如此。你只需要逃避问号。试试这个:
RewriteCond %{HTTP_REFERER} !^http://shop.com/index.php\?controller=authentication&back=my-account [NC]