2016-06-29 5 views
1

私は、クエリ文字列のリダイレクト設定しています:apacheのクエリ文字列の書き換えルール

expo.com/en/general/campaigns/on-second-thought.html?slide=ost-2016-tank

RewriteCond %{HTTP_HOST} ^(.*)expo\.com 
RewriteCond %{QUERY_STRING} slide=ost-2016-tank 
RewriteRule  ^/en/general/campaigns/on-second-thought.html?$  http://www.expo.com/en/general/campaigns/on-second-thought/ost-2016-tank.html [R=301,L,NC] 
expo.com/en/general/campaigns/on-second-thought/ost-2016-tank.html へのリダイレクトが起こったが

http://www.expo.com/en/general/campaigns/on-second-thought/ost-2016-tank.html?slide=ost-2016-tank 
以下のような= OST-2016-タンクの添付スライドを?

slide=ost-2016-tankパラメータはリダイレクトされたページに追加されます

答えて

1

ルールで新しいクエリ文字列が定義されていないため、Apacheのデフォルトの動作では、古いクエリ文字列を新しいURLにコピーします。

RewriteRule ^/en/general/campaigns/on-second-thought\.html?$ http://www.expo.com/en/general/campaigns/on-second-thought/ost-2016-tank.html [R=301,L,NC,QSD] 
:アパッチ> = 2.4のために、あなたはまた、フラグQSD(クエリ文字列破棄)を使用することができ、

RewriteRule ^/en/general/campaigns/on-second-thought\.html?$ http://www.expo.com/en/general/campaigns/on-second-thought/ost-2016-tank.html? [R=301,L,NC] 

または:それを取り除くために、あなたが書き換えたアドレスに?を追加/にリダイレクト

+0

Thqs Julp、その作業は現在正常です。 –

1

リダイレクトしないときだけ空白のクエリ文字列を追加します。

RewriteCond %{HTTP_HOST} ^(.*)expo\.com 
RewriteCond %{QUERY_STRING} ^slide=(ost-2016-tank)$ 
RewriteRule ^(/?en/general/campaigns/on-second-thought)\.(html)$ $1/%1.$2? [R=301,L,NC] 

リダイレクトするときに再びhttp://expo.com言及する必要はあります。 Rフラグのため、自動的に同じホスト名にリダイレクトされます。同じ文字列を何度も何度も繰り返す必要はありません。マッチグループを使用して後でそれらを参照すると動作します。

パターンには.html?$が含まれています。実際には.htmlと一致し、.htmと一致します。 RewriteRuleコンテキストでは、クエリ文字列は受信されません。

関連する問題