2016-09-02 6 views
1

私は、特定のクエリのparamsを一致させたい、といくつかの新しいURLにリダイレクトするが、他のすべてのクエリのparams(例えばUTMなど)を失うことはありませApacheのhtaccess rewrite/redirectで他のすべてのクエリパラメータを渡しますか?

例えば要求は、私がリダイレクトする

home.com/request?a=1&utm=stuff 

ある場合

home/com/target?utm=stuff 

ない

home/com/target?&utm=stuff 

へ私は$ 1 $ 2が書き換えルールのグループを参照していることを知っています。 と%1%2はクエリ文字列のグループを参照しています。

RewriteCond %{REQUEST_URI} ^request$ 
Rewritecond %{QUERY_STRING} ^(.)a=1(.*)$ 
RewriteRule .* /?%1%2 [L,R=302] 

a=1を減算しますが、スマート&を処理しません。

+0

を。 私は、この問題に対する答えまでは、追加のURI条件が大きな違いはないと思いますか? – ahnbizcad

+0

'url条件を追加すると、' asfd'が元のURLの一部ではない場合、つまり 'home.com/request?utm = stuff&a = 1&other = stuff'の場合にルールが停止することは間違いありません。 – anubhava

+1

私はそれを均一にしました。私は例を構築中に切り替えました。質問は基本的にどのようにターゲットURLのクエリパラメータ – ahnbizcad

答えて

1

あなたはこのリダイレクトルールを使用することができます:私は特定のURIではなく、他のURIで特定の要求だけではなく、クエリのparamsが、クエリのparamsに一致するようにしようとしている

RewriteCond %{QUERY_STRING} ^(.*&)?a=1(?:&(.*))?$ [NC] 
RewriteRule ^request/?$ /target?%1%2 [L,NE,R=302] 
+1

天才の最初の '&'をトリミングするのですか?ありがとう。私はノンキャプチャのグループと入れ子について知らなかった。 – ahnbizcad

+0

クエリ文字列に任意の順序で任意のクエリパラメータを表示することができれば少し難解です。 – anubhava

+1

そのため、リクエストクエリのparamにクエリパラメータがある場合、コードを生成するコード内のアンパサンドをシムにしました。これは私の状況には十分です – ahnbizcad

関連する問題