web-dev-qa-db-ja.com

エラー400の不正なリクエストをカスタムページにリダイレクトする際の問題

.htaccessファイルを次のように編集しました。

ErrorDocument 404 /index.php?page=page-not-found
ErrorDocument 400 /index.php?page=bad-request

これで、エラー404は正しくリダイレ​​クトされますが、 http:// newshell /%22 %% 5E $ %% 5E&%C2%A3&のようなアドレスを入力すると、サーバーは400エラーをリダイレクトしません。ただし、デフォルトのApacheメッセージを表示します。私は何が間違っているのですか?

4
Paul

Apacheドキュメント からの引用:

ほとんどのエラーメッセージは上書きできますが、ErrorDocumentの設定に関係なく、内部メッセージが使用される特定の状況があります。特に、不正な形式のリクエストが検出された場合、通常のリクエスト処理はただちに停止され、内部エラーメッセージが返されます。これは、不正な要求によって引き起こされるセキュリティの問題を防ぐために必要です。

したがって、リダイレクトエラー400が必要な場合は、次のようにhttpd.confApache構成ファイルのErrorDocumentディレクティブのコメントを解除する必要があります。

# Some examples:
#ErrorDocument 500 http://foo.example.com/cgi-bin/tester
ErrorDocument 400 /cgi-bin/bad_request.pl
#ErrorDocument 401 /subscription_info.html
#ErrorDocument 403 "Sorry can't allow you access today" 

apacheサーバーを再起動します。

6
Ivan Chuchman