web-dev-qa-db-ja.com

不正な形式のホストヘッダーを含む400エラーでApacheにカスタムページを返すようにするにはどうすればよいですか?

私が求めていたのは少しわかりづらかったと思うので、もっとシンプルにしようと思っています...

不正な形式のホストヘッダーを含むリクエストを受信したときに、サーバーにカスタム400エラーページを表示する必要があります。

私が理想的に欲しいのはErrorDocument 400 \somepage.phpです

http:\\myserver\bla%blaなどのページにアクセスすると、400個のエラーが発生する可能性があります。これで、スクリプトは正常に実行されます。同様に、\somepage.phpセクションをTest textに変更すると、Apacheはそのテキストを返します。

ただし、400エラーが不正な形式のホストヘッダーが原因である場合は、テキストでは機能しますが、Webページでは機能しません。

私がすべての髪を失う前に、誰かがこれに光を当てて、実用的な解決策を与えることができますか?! (これですでにかなり失われています!)。

5
William Hilsum

多くのことを試した後、これは不可能であることが判明しました。

HTTPDのバグトラッカーでチケットを開きました -修正せずに閉じました。

彼らは言った:

Wontfixとしてマークすると、リクエストの形式が正しくない場合、サーバーはファイルシステムからカスタムエラードキュメントを提供するためにそれ以上の処理を実行しません(エラーページで再帰的な400が発生したことが通知されているはずです)

私の意見では、これはあまり良くありません-これがデフォルトのアクションであることは理解していますが、必要に応じてユーザーに別のページを使用させてはどうでしょうか。

率直に言って、このように機能するはずですが、他の手法(プロキシ、書き換え/類似)を含む回答を誰かが思いついた場合は、喜んでそれを見て、おそらくその回答マークを付けます。


編集

結局、Nginxと400ページをリダイレクトするカスタムディレクティブを使用してこれを行うことが可能であることがわかりました。 Apache Devsがこれを認識しない理由はわかりませんが、Nginxは問題なく実行しました。

1
William Hilsum