我试图编写一个重写规则来检查是否以任何顺序设置了多个获取参数,然后使用这些获取参数中的参数重定向到网址,这就是我尝试过的方法
RewriteCond %{QUERY_STRING} (?:^|&)retailer_filter=([^&]+)
RewriteCond %{QUERY_STRING} (?:^|&)product=([^&]+)
RewriteCond %{QUERY_STRING} (?:^|&)sitechange=([^&]+)
RewriteRule ^$ /?product=%1&retailer_filter=%2 [R=301,L]
这重定向但只有sitechange参数,所以
/?product=test&retailer_filter=test&sitechange=1
重定向到?/product=1&retailer_filter=
我希望它重定向?/product=test&retailer_filter=test
但它需要能够以不同的顺序接受get参数,所以
/?sitechange=1t&retailer_filter=test&product=test
还需要重定向到?/product=test&retailer_filter=test
任何帮助将不胜感激
答案 0 :(得分:1)
您实际上是在尝试删除sitechange
查询参数。您可以使用此规则:
RewriteEngine On
RewriteCond %{THE_REQUEST} \?(.*&)?sitechange=[^&]*&?(\S*)\sHTTP [NC]
RewriteRule ^/?$ %{REQUEST_URI}?%1%2 [R=301,NE,L]
此规则将以任何顺序接受GET参数。 sitechange=
可以是第一个或最后一个或中间位置。