2017-06-13 24 views
0

私は以下のようにいくつかのURLをリダイレクトするのに問題があります。異なる猫の品種を持つ多くのURLがあります。誰もがこの問題を助けることができます。htaccess url疑問符を含むURLを書き換えます

例のURLはリダイレクトします

http://www.exampledomain.co.uk/cats/database.nsf/catsforsale!openform?Breed=Persian 

私はそれが以下のURLに演出します。私のPHPスクリプトは、その後、URLがきちんと作るためにいくつかのより複雑なリダイレクトを実行する必要があります。

http://www.exampledomain.co.uk/display_pets.php?pettype=Cats&petbreed=Persian 

私は以下の書き換えを試みたが、それは仕事をdoesntの、それだけですべてのリダイレクトdoesntの、私はそれが何かを持っているかもしれないと思いますとともに ? :

RewriteRule ^/cats/database.nsf/catsforsale!openform?Breed=(.*)$ display_pets.php?pettype=Cats&petbreed=$1 [L] 
+0

のRewriteRuleはURLのパスコンポーネントに一致します。クエリ文字列の内容を確認する場合は、RewriteCondを使用する必要があります。 – CBroe

答えて

0

通常、RewriteRuleはクエリ文字列を参照しません。

リライトでQSAフラグを使用する必要があります。クエリ文字列を結合し、ターゲットURLに追加します。

あなたは次のことを試すことができます。

RewriteRule ^(.*)$ display_pets.php?url=$1 [L] 

これは、ターゲットURLのURLパラメータに全体のソースURLを渡します。また、ソースurlのクエリ文字列をターゲットURLに追加します。

もう1つの方法は、RewriteCond内のクエリ文字列と一致させることです。

RewriteCond %{QUERY_STRING} url=(.*) 
RewriteRule ^/cats/database.nsf/catsforsale!openform$ display_pets.php?pettype=Cats&petbreed=%1 [L] 

以下のリンクを参照してください:

RewriteRule FlagsManipulating the Query String