1

URLでアンパサンド記号を使用する方法を理解しようとしています。

ここでそれを見た:http://www.indeed.co.uk/B&Q-jobs私は似たようなことをしたい。

URLにアクセスしたときにサーバーが何を呼び出すのか正確にはわかりません。

.htaccessでこのようなリクエストを取得し、特定のファイルに書き換える方法はありますか?

助けてくれてありがとう!

4

2 に答える 2

2

アンパサンドは、クエリ文字列でよく使用されます。クエリ文字列は、ページがコンテンツのレンダリング、情報の追跡などに使用する 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 内のアンパサンドの目的は、変数をクエリ文字列にまとめることです。その目的以外で使用することは正しくなく、将来的に混乱を招く可能性があります。

于 2013-02-06T22:21:02.173 に答える
1

のような URI は、次のよう/B&Q-jobsにエンコードされてサーバーに送信されます: /B%26Q-jobs. &ただし、書き換えエンジンを介して送信されると、URI は既にデコードされているため、実際に文字と照合する必要があります。

Rewrite ^/?B&Q-jobs$ /a/specific/file.html [L]

これにより、誰かが をリクエストする/B&Q-jobsと、実際に でコンテンツが提供され/a/specific/file.htmlます。

于 2013-02-06T22:08:32.137 に答える