2011-11-08 6 views
0

私のURLに%記号があるので、私の書き換えルールは時折面倒です。例えばApacheモジュールの書き換えのためのURLの%signと一致するRegexルール

このURL:私は5番目のルール([-ZA-Z0-9] +)にしないで変更することができますどのように

RewriteRule ^product/([a-zA-Z]+)/([\sa-zA-Z0-9\-\+\.]+)/([0-9]+)/([A-Z0-9]+)/([a-zA-Z0-9]+) /product?&cat=$1&q=$2&page=$3&prod=$4&prodName=$5 

http://www.chillisource.co.uk/product/Grocery/Dr.%20Burnoriums%20Psycho%20Juice/1/B005MSE5KG/Psycho_Juice_70%_Ghost_Pepper 

は、これは私の書き換えルールであります製品名に%がある場合は失敗しますか?

ありがとうございます。

+0

"([a-zA-Z0-9 \%] +)"を試したことがありますか? –

+0

@Truthあなたが正しいです...私はボタンをクリックして約2秒後、同じ考えを持っていました。 –

答えて

1

おそらく、それは%20ではありませんが、スペースです。つまり、adterのurldecodingを書き換えるために渡されたURLです。そうでない場合は、範囲にパーセント記号を追加します。 (はいの場合 - スペース)。

0

----この部分を忘れて、私はmod_rewriteのドキュメンテーション(http://httpd.apache.org/docs/current/mod/から得るものからの質問----

を誤解mod_rewrite.html)、あなたは私が次のステートメントから仮定(16進エンコードされた文字に対処する必要はありません。

THE_REQUEST サーバにブラウザから送信される完全なHTTPリクエストライン(例えば、「GETを/ この値はエスケープされていません(デコードされていません)他のほとんどの変数と異なり、です。実際に

、あなたはどこにでもそのに対処する必要があると思いますので、mod_rewriteのを使用することは事実上不可能であろう、例えば、あなたはいつもの代わりに「A」の%41を書き込むことができます。

---しかし、次はまだ

しかし、あなたの書き換えルールは、あなたが投稿、リクエストURLと、少なくともいない、動作しないことができる---真である:正規表現の最後の部分「([A -zA-Z0-9] +)」がFARであまりにも厳しいです。この場合、それは次の理由で失敗した:それはあなたがアンダースコアを含めるのを忘れて

  • 「70%」、「_」のように、パーセント記号の治療を欠い

    少なくとも2つの文字( "[a-zA-Z0-9%_] +")を追加してみてください。うまくいくはずです。

  • +0

    ( "[a-zA-Z0-9%_] +")はどちらも動作しません...(正規表現の厳格さを低くするにはどうしたらよいでしょうか? –