私の .htaccess ファイルでは、次のルールを定義しました。
RewriteRule ^([-0-9a-zA-Z]+) search.php?id=$1
http://example.com/abcdをブラウジングしている場合、上記のルールは正常に機能します。次& % - /
のように URL で
記号を使用する必要があります: http://example.com/ab&cd
これを機能させるには、ルールにどのような変更を加える必要がありますか?
私の .htaccess ファイルでは、次のルールを定義しました。
RewriteRule ^([-0-9a-zA-Z]+) search.php?id=$1
http://example.com/abcdをブラウジングしている場合、上記のルールは正常に機能します。次& % - /
のように URL で
記号を使用する必要があります: http://example.com/ab&cd
これを機能させるには、ルールにどのような変更を加える必要がありますか?
そのルールがどのように機能するかわかりません。まず、ループします。第 2 に、 と のキャプチャ グループは$2
あり$3
ませんが、$1
は常に「検索」するので問題ありません。機能するルールの部分的なスニペットを貼り付けたと仮定しています。
&
、%
、または/
が一致しない理由は、正規表現が次のように述べているためです。
[-0-9a-zA-Z]+
これは、1 つ以上の文字、数字、またはダッシュを意味します。いいえ&
、、、%
または/
。したがって、それらを角括弧に追加できます。
RewriteRule ^([-0-9a-zA-Z/%&]+) search.php?id=$1&ff=$2&ffid=$3
ただし、ルールが適用される前にURI がデコードされることに注意してください。これは、URI が次のようになっていることを意味します。
/foo%28bar
%
URI は次のようにデコードされるため、と照合する必要はありません。
/foo(bar
と照合する必要があります(
。より良いオプションは、ドット以外のすべてに対して一致する場合があります。
RewriteRule ^([^.]+) search.php?id=$1&ff=$2&ffid=$3
またはあなたの試合で望まないものは何でも。
試す:
RewriteRule ^([^.]+)$ search.php?id=$1 [B]
ここでの違いは$
、一致を URI の末尾にバインドすることと、B
フラグによって確実&
にエンコードされることです。
に変換される
ように、urlencode'ab&cd'
を使用して URL エンコードする必要があります。&
%26
この後、 search.php でそれを説明し、 urldecodeを使用してデコードする必要があります。
URL を次のようにします。
http://example.com/id/ff/ffid
その周りにルールを書きます。また、なぜ 3 つの ID パラメータが必要なのですか? 最初のものを使用して他の2つを検索できませんでしたか?