使用查询字符串进行htaccess重定向

时间:2015-10-20 05:57:41

标签: apache .htaccess mod-rewrite query-string url-redirection

我的htaccess规则是:

RewriteCond %{QUERY_STRING} ^param1=val1
RewriteRule ^index\.php$ /page1 [L,R=301]

重定向到网址:http://myhost/page1?param1=val1

如果我的网址是:http://myhost/index.php?param1=val1&param2=val2

应重定向到:http://myhost/page1?param2=val2

这意味着,它不应该在 RewriteCond

中包含匹配的查询字符串

2 个答案:

答案 0 :(得分:1)

只需使用群组匹配:

RewriteCond %{QUERY_STRING} ^param1=val1(?:&(.+))?$
RewriteRule ^index\.php$ /page1?%1 [R=301,L,NC]

答案 1 :(得分:0)

您可以使用:

RewriteCond %{QUERY_STRING} .*&?(param\d=val\d)
RewriteRule ^index\.php$ /page1?%1 [R=301,L,NC]

使用:
http://myhost/index.php?param1=val1 - > http://myhost/page1?param1=val1

http://myhost/index.php?param1=val1&param2=val2 - > http://myhost/page1?param2=val2
但只有真实姓名是param1,param2,param3 ......