これはよくある質問だとはわかっていますが、ローカルホスト (WAMP) でなぜ失敗するのかわかりません。
500 エラーをログイン ページにリダイレクトしたいと思います。次のことを試しました。
ErrorDocument 500 http://localhost/mysite/login.php
ErrorDocument 500 C:/wamp64/www/mysite/login.php
ErrorDocument 500 mysite/login.php
ErrorDocument 500 login.php
いずれもログイン ページへのリダイレクトに失敗しました。
答え1
PHP で何かをテストしていました。エラー報告を無効にしたらどうなるか確認したかったのです。予想通り 500 エラーになりました。htaccess でリダイレクトを設定したいと思います。
これを処理するために ErrorDocument を定義することはできません.htaccess
。
display_errors
がオフの場合、アプリケーションで回復不可能なエラーが発生すると、PHP 自体は空の 500 応答を返します。
この応答をカスタマイズ/処理するには、独自のカスタム PHP エラー ハンドラーを定義する必要があります。 参考文献
(ただし、致命的なパースエラースクリプト内でエラー ハンドラーが呼び出されない可能性はありますが、実稼働サーバーではそのようなことは発生しないはずです。
それに関する文書を教えていただけますか?
残念ながら、これについては中心的な参照点がありません。本当にそれが仕組みなのです...
Apache ErrorDocumentは、Apache自体がエラーレスポンスをトリガーした場合にのみトリガーされます。(カスタム500 ErrorDocumentは、全てApache 500 応答は、後で定義すると、.htaccess
ほとんど何もキャッチできない可能性があります。これは、サーバー構成/仮想ホストで定義する必要があります。
PHP が応答を送信したときに Apache ErrorDocument がトリガーされるようにするには、Apache が応答をインターセプトして上書きする必要がありますが、これは行われません。PHP スクリプトから 404 を送信する場合と同様に、Apache はこれをインターセプトして Apache 404 応答を送信しません。