Apacheがユーザーにスローする可能性のあるほとんどすべてのエラーをキャッチし、そのユーザーをエラーコントローラーにリダイレクトするために、.htaccessファイルに多数のErrorDocumentディレクティブがあります。これにより、エラーがよりユーザーフレンドリーな方法でレンダリングされます。しかし、それはうまくいかないようです。
たとえば、mysite.com / "" ## $ ## $!のような無効なURLを入力すると、errors.phpファイルへのリダイレクトではなく、常にApacheのデフォルトの403エラーメッセージが表示されます。以下は私が使用しているディレクティブです。それを機能させるために何か他のことをする必要がありますか?(AllowOverride Allが設定されています)
ErrorDocument 403 /errors.php
これが絶対カスタムエラー処理にアプローチする間違った方法である場合は、私に知らせてください。正しい方向に微調整していただければ幸いです。
ありがとうございました!
編集:ああ、私がこれについて言及すると思っただけです。リクエストをリダイレクトするための独自のMVC構造を作成しましたが、これはうまく機能します。PHP内から、ユーザーが存在しないURLを要求した場合、私自身の404エラーは問題なく発生します(または私が定義した他のエラー)。つまり、基本的に、mysite.com/!!!!と入力すると URLに挿入すると、機能し、404が返されます。ただし、二重引用符でリクエストを開始すると、デフォルトのApache403エラーが発生します。奇数。また、500エラーはerrors.phpへのリダイレクトにも失敗し、デフォルトのApache 500画面を返すだけです(たとえば、header( "HTTP / 1.0 500 Internal Server Error"); die();)でテストする場合。
編集3:ErrorDocument 200 "message"
.htaccessファイルに入れようとしましたが、何も起こりませんでした。開いたページはすべて正常に開きます。最悪のシナリオでは、これは無限ループでスタックするはずです。最良のシナリオでは、「メッセージ」を出力する必要があります。それはどちらもしませんでした、それは単にErrorDocumentを無視しました。Apacheのアクセスログには通常の200OKヘッダーが記録されていますが、.htaccessでは完全に無視されていました。