1

検索結果ページのURLを/search/query-1.htmlのようなものに書き直そうとしていますが、スラッシュ「/」または「#」を含むキーワードを検索しようとすると、..(A / Dなど)が返されます。 404エラー。

私の.htaccessには次のものがあります。

RewriteEngine on
RewriteRule ^search/(.*)-([0-9]+).html$ index.php?search=$1&page=$2 [L]

何が問題になる可能性がありますか?

ありがとう。

4

1 に答える 1

2

コメントで述べたようにApacheにエンコードされたスラッシュを受け入れさせたい場合は、AllowEncodedSlashesディレクティブを使用してサーバー構成でそれを有効にする必要があります。

AllowEncodedSlashes on

現在、これを有効にしていない可能性があります。その場合のデフォルトの動作では、Apacheは404応答でリクエストを拒否します。このディレクティブはサーバーまたは仮想ホストのコンテキストでのみ指定できるため、環境によってはこれを変更できない場合があります。エンコードされたハッシュ記号に関する限り、それを処理するのに問題はないはずです。

ただし、デコードされたクエリ文字列にハッシュが挿入される可能性があり、問題が発生する可能性があります。それが事実であり、Apacheのインストールが十分に新しい場合は、Bフラグをに追加RewriteRuleして、後方参照が適切にエスケープされるようにする必要があります。

RewriteRule ^search/(.*)-([0-9]+).html$ index.php?search=$1&page=$2 [B,L]
于 2011-03-06T04:51:16.387 に答える