当URL参数不匹配时,Mod_rewrite重定向

时间:2014-11-27 13:27:15

标签: apache .htaccess mod-rewrite redirect httpserver

当查询字符串参数不匹配时,我需要将页面重定向到主页。

例如:

www.example.com/something?param1=1111&param2=2222&param3=3333&param4=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],它们之间有什么区别?感谢

1 个答案:

答案 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的参数值。