2017-09-05 29 views
1

htaccessファイルで、同じURLからクエリ文字列パラメータを使用して同じURLにリダイレクトする方法を質問したいと思います。たとえば、私のURLがwww.example.com/abc.php?cid=5&scid=10なら、それをwww.example.com/abc.phphtaccessファイルのURLリダイレクト

にリダイレクトしたいと思います。URLは同じで、リダイレクトではクエリ文字列パラメータが削除されています。私は単一のクエリ文字列を持つURLのhtaccessファイルコードを書いていますが、複数のパラメータではリダイレクトされません。ここで

は期待どおりに動作している単一のパラメータのための私のコードです:

RewriteCond %{QUERY_STRING} cid=7$ 
RewriteRule (.*) /contact-us.php? [R=301,L] 

それはcontact-us.php

contact-us.php?cid=7ページをリダイレクトします。しかし、私はそれがリダイレクトされません。複数のパラメータのためのコードをextedingてるとき。

RewriteCond %{QUERY_STRING} cid=9$ 
RewriteCond %{QUERY_STRING} scid=14$ 
RewriteRule (.*) /stakeholders.php? [R=301,L] 

この1はstakeholders.phpページにstakeholders.php?cid=9&scid=14ページをリダイレクトするようになっている:ここで私はこのケースで書かれているものです。誰かが第2のコードで何が間違っていると教えてくれる?

私もそれを検索しましたが、ほぼすべての結果が、1つのURLから別のURLにリダイレクトされ、クエリ文字列パラメータが削除された同じURLにはなりません。ありがとう。

+0

あなたはこの回答を見つけることができます! https://stackoverflow.com/questions/44925043/beautify-the-url-for-api-by-htaccess-and-php – JaTurna

答えて

1

あなたはこのように、一つの条件にクエリを接続する必要があります。

RewriteEngine On 
RewriteCond %{QUERY_STRING} cid=9&scid=14 [NC] 
RewriteRule ^(.*)$ http://www.example.com/stakeholders.php? [R=301,NC,L] 

これは、あなたが任意のクエリのためにそれをやってみたかったならば、あなたの代わりにcid=(.+)&scid=(.+)を使用することができ、cid=9&scid=14の特定のクエリのために動作します。

書き換えられたURLの末尾にある?は、元のクエリが最後に表示されなくなるようにし、301リダイレクトを使用して変更を行います。

関連する問題