2017-05-26 41 views
1

我試圖編寫一個重寫規則,檢查是否以任意順序設置了多個get參數,然後使用這些get參數的參數重定向到一個url這是我試過的.htaccess以任何順序捕獲GET參數

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

,但它需要能夠接受differen訂單獲取參數,以便

/?sitechange=1t&retailer_filter=test&product=test也需要重定向到?/product=test&retailer_filter=test

任何幫助,將不勝感激

回答

1

您有效地試圖刪除sitechange查詢參數。您可以使用此規則:

RewriteEngine On 

RewriteCond %{THE_REQUEST} \?(.*&)?sitechange=[^&]*&?(\S*)\sHTTP [NC] 
RewriteRule ^/?$ %{REQUEST_URI}?%1%2 [R=301,NE,L] 

此規則將接受任何順序的GET參數。 sitechange=可以是第一或最後或中間位置。