2

私の .htaccess ファイルでは、次のルールを定義しました。

RewriteRule ^([-0-9a-zA-Z]+) search.php?id=$1

http://example.com/abcdをブラウジングしている場合、上記のルールは正常に機能します。次& % - /のように URL で 記号を使用する必要があります: http://example.com/ab&cd

これを機能させるには、ルールにどのような変更を加える必要がありますか?

4

4 に答える 4

5

そのルールがどのように機能するかわかりません。まず、ループします。第 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フラグによって確実&にエンコードされることです。

于 2013-09-05T16:58:40.200 に答える
0

に変換される ように、urlencode'ab&cd'を使用して URL エンコードする必要があります。&%26

この後、 search.php でそれを説明し、 urldecodeを使用してデコードする必要があります。

于 2013-09-05T16:58:27.290 に答える
0

URL を次のようにします。

http://example.com/id/ff/ffid

その周りにルールを書きます。また、なぜ 3 つの ID パラメータが必要なのですか? 最初のものを使用して他の2つを検索できませんでしたか?

于 2013-09-05T16:58:52.880 に答える