2011-12-08 43 views
0

こんにちは、私はこのURLを書き換えて問題を抱えています。RewriteCond - これをエスケープする方法は?

URLはそうのようなパブリックドメインに送り出されました:

http://www.domain.com/directory/directory-2/10018485&key=3945 

私はそれを修正するためのルールを記述する必要があります。

http://www.domain.com/directory/directory-2/10018485?key=3945 

` アムので、同じようにそれを行うにはトリング、成功しなかった....

RewriteCond %{REQUEST_URI} \/directory\/directory-2\/10018485&key=3945 
RewriteRule ^(.*)$ /directory/directory-2/?id=10018485&key=3945 [L] 

感謝:)

+0

はディレクトリとディレクトリ-2の定数ですか?変更しないでください。 – NrNazifi

+0

物事REQUEST_URIはエンコードされたURLです。正規表現をRewriteRuleに入れることができます。 RewriteCondを使用する必要はありません。これを試してください: 'RewriteRule^directory/directory-2/10018485&key = 3945 $/directory/directory-2 /?id = 10018485&key = 3945 [L、R]'(私はGoogleに重複したコンテンツを防ぐためにRを追加しました)それ以外の場合は、それぞれ '&'と '='に対して%26と%3Dを試してください。 – Gerben

答えて

0

&を%26に一致させてエスケープする必要はありません。あなたが持っているものは私のためにうまくいきます、なぜあなたのために働いていないのか分かりません。しかし、あなたはRewriteCondを必要とせず、2を1つのルールに組み合わせることができます。私のためにこれらの作業の実際の要求が/directory/directory-2/10018485&key=3945またはdirectory/directory-2/10018485%26key=3945より抽象的な意味で

RewriteRule ^directory/directory-2/10018485&key=3945$ /directory/directory-2/?id=10018485&key=3945 [L] 

です:

RewriteRule ^directory/directory-2/([0-9]+)&key=([0-9]+)$ /directory/directory-2/?id=$1&key=$2 [L] 
関連する問題