web-dev-qa-db-ja.com

誤ってエンコードされたURLはどのように処理する必要がありますか?

つい最近、一部のサイトが誤ってパーセントエンコードされたURLでリンクしていることに気付きました。私のサーバー(LAMP)は404 Not Foundで応答します。

たとえば、次のような私のURLの場合:

http://www.site.com/page.php?param=value

彼らはこのようにリンクしています:

http://www.site.com/page.php%3Fparam%3Dvalue

そう:

  • 誰が間違っていますか?理解できないサーバーまたは、URLを適切に指定しないためのリンクサイトですか?
  • 誤ってエンコードされたクエリ文字列の区切り文字(%3Fの代わりに?)を理解するようにApacheを構成するために何かできますか?
  • そうでない場合、%3F?に変換してリダイレクトを設定しても安全ですか?
5
Itai

まず最初に、@ LazyOneが言ったように、サードパーティのURLが適切に生成されていないので、サーバーが失敗することが予想されます。

有効なHTMLと有効なURLは別のものであることに注意してください。 HTMLコンテンツのエンティティをエスケープする である必要がありますが、これは リンク、画像アドレス、外部ファイルの呼び出しを書き込む の場合は当てはまりません。

脱出するかどうかを決める前に、自問してみてください。これはユーザーによって読まれますか、それともブラウザによって読まれますか?答えは、どのタイプのエンコーディングを使用すべきかを示します。

2
Dave