2017-05-26 19 views
1

複数のgetパラメータが任意の順序で設定されているかどうかを確認し、これらのgetパラメータの引数を使用してurlにリダイレクトする書き換えルールを書き込もうとしています。これは私が試したものです.htaccess catch任意の順序でGETパラメータを指定する

RewriteCond %{QUERY_STRING} (?:^|&)retailer_filter=([^&]+) 
RewriteCond %{QUERY_STRING} (?:^|&)product=([^&]+) 
RewriteCond %{QUERY_STRING} (?:^|&)sitechange=([^&]+) 
RewriteRule ^$ /?product=%1&retailer_filter=%2 [R=301,L] 

これはリダイレクトが、私はそれをリダイレクトしたいときだけなので

/?product=test&retailer_filter=test&sitechange=1?/product=1&retailer_filter=

にリダイレクトsitechange引数を持つ?/product=test&retailer_filter=test

は、それはそう

/?sitechange=1t&retailer_filter=test&product=testはまた、任意の助けが

答えて

1

あなたが効果的にsitechangeを削除しようとしているのは理解されるであろう?/product=test&retailer_filter=test

にリダイレクトする必要がありますdifferen注文でGETパラメータを受け入れることができるようにする必要がありますクエリパラメータ。

RewriteEngine On 

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

このルールは、任意の順序でGETパラメータを受け入れます。 sitechange=は最初または最後または中間の位置にすることができます。

関連する問題