URLでアンパサンド記号を使用する方法を理解しようとしています。
ここでそれを見た:http://www.indeed.co.uk/B&Q-jobs私は似たようなことをしたい。
URLにアクセスしたときにサーバーが何を呼び出すのか正確にはわかりません。
.htaccessでこのようなリクエストを取得し、特定のファイルに書き換える方法はありますか?
助けてくれてありがとう!
URLでアンパサンド記号を使用する方法を理解しようとしています。
ここでそれを見た:http://www.indeed.co.uk/B&Q-jobs私は似たようなことをしたい。
URLにアクセスしたときにサーバーが何を呼び出すのか正確にはわかりません。
.htaccessでこのようなリクエストを取得し、特定のファイルに書き換える方法はありますか?
助けてくれてありがとう!
アンパサンドは、クエリ文字列でよく使用されます。クエリ文字列は、ページがコンテンツのレンダリング、情報の追跡などに使用する URL の末尾にある 1 つ以上の変数です。通常、クエリ文字列は次のようになります。
http://www.website.com/index.php?variable=1&variable=2
ファイル拡張子の後の URL の最初の特殊文字が?
. これはクエリ文字列の開始を指定します。
あなたの例には がない?
ため、クエリ文字列は開始されません。RFC 1738によると、アンパサンドは指定された目的 (クエリ文字列内の変数をリンクする) を除いて有効な URL 文字ではないため、提供したリンクは技術的に無効です。
その無効性を回避する方法、および起こりそうなことは、書き直しです。書き換えは、パターンまたは一致に基づいて特定のファイルを表示するようにサーバーに通知します。たとえば、あなたの例で動作する可能性のある .htaccess 書き換えルールは次のようになります。
RewriteEngine on
RewriteRule ^/?B&Q-(.*)$ /scripts/b-q.php?variable=$1 [NC,L]
このルールは、で始まるすべての URL を検出し、代わりにhttp://www.indeed.co.uk/B&Q-
のコンテンツを表示しますhttp://www.indeed.co.uk/scripts/b-q.php?variable=jobs
。
Apache 書き換えルールの詳細については、公式ドキュメントを確認してください。
最後に、クエリ文字列の一部でない限り、書き換えを行う場合でも、URL でアンパサンドを使用しないことをお勧めします。URL 内のアンパサンドの目的は、変数をクエリ文字列にまとめることです。その目的以外で使用することは正しくなく、将来的に混乱を招く可能性があります。
のような URI は、次のよう/B&Q-jobs
にエンコードされてサーバーに送信されます: /B%26Q-jobs
. &
ただし、書き換えエンジンを介して送信されると、URI は既にデコードされているため、実際に文字と照合する必要があります。
Rewrite ^/?B&Q-jobs$ /a/specific/file.html [L]
これにより、誰かが をリクエストする/B&Q-jobs
と、実際に でコンテンツが提供され/a/specific/file.html
ます。