当查询字符串参数不匹配时,我需要将页面重定向到主页。
例如:
www.example.com/something?param1=1111¶m2=2222¶m3=3333¶m4=4444 -->
--> www.example.com
因为param1和param4不匹配。
我在这里写了一点:
RewriteCond %{QUERY_STRING} param1=1111
RewriteCond %{QUERY_STRING} !param4=1111
RewriteRule ^/(.*)$ http://www.example.com [R]
但是我确信它没有正确地进行操作,因为在某些情况下,当param4根本不存在于url中时,在这种情况下它会经历重写条件。任何人都可以帮我解决这个问题,因为我对这些配置很新。而且,有人可以向我解释哪种标志更适合这种情况[R]或[R = 301],它们之间有什么区别?感谢
答案 0 :(得分:1)
在mod_rewrite
中执行此操作有点棘手。您可以使用此基于反向引用的规则:
RewriteEngine On
RewriteCond %{QUERY_STRING} (?:^|&)param1=([^&]*)
RewriteCond %1::%{QUERY_STRING} (.*?)::(?:|.*&)param4=([^&]*)
RewriteCond %1::%2 !^(.*?)::\1$
RewriteRule ^ /? [L,R]
%1
代表param1
的参数值,%2
代表param4
的参数值。