web-dev-qa-db-ja.com

すべてのエラーをキャッチする単一のErrorDocumentディレクティブ(.htaccess)

考えられるすべてのエラーをキャッチし、単一のカスタムエラーページでそれらを処理するワイルドカードディレクティブのようなものはありますか?

ErrorDocument 404 /error.php?code=404
ErrorDocument 403 /error.php?code=403
...
ErrorDocument NNN /error.php?code=NNN #possible use of RegExp?

ここではおそらく多くのカスタムエラーページを処理しないことはわかっていますが、これについては興味があります。

38
Mike Valeriano

それは不可能です。デフォルトのエラーハンドラーとは異なる方法で処理するステータスコードごとに、ErrorDocumentディレクティブが必要です。

26
Gumbo

エラーステータスコードを渡すのではなく、REDIRECT_STATUS環境変数(Apacheによって設定)を介してスクリプトで取得できます。参照: http://httpd.Apache.org/docs/2.0/custom-error.html

4
Zhami

完全な参照のために...私が得ることができる限り...

最初-- 。htaccess フォーマット済み

2番目-説明。

私がここで見つけたこれらすべて-> httpstatuses.com

これらはすべてのコードです-エラーだけではありません..いくつかはあなたのサイトを壊します。 。

次のように使用します。

ErrorDocument 100 https://EXAMPLE.com

これは正確なコピーの貼り付けです。これは私のものではありませんが、リストを再フォーマットしました。


(説明を表示するにはカーソルを合わせ、詳細を表示するにはクリックしてください。)

1××:情報

100 :続行
101 :プロトコルの切り替え
102 :処理中


2××:成功

200 :OK
201 :作成済み
202 :承認済み
203 :信頼できない情報
204 :OK(コンテンツなし)
205 :コンテンツをリセット
206 :部分的なコンテンツ
207 :マルチステータス
208 :すでに報告されています
226 :IM使用


3××:リダイレクト

300 :複数の選択肢
301 :恒久的に移動
302 :見つかりました
303 :その他を参照
304 :変更なし
305 :プロキシを使用
307 :一時的なリダイレクト
308 :永続的なリダイレクト


4××:クライアントエラー

400 :不正なリクエスト
401 :無許可
402 :支払いが必要
403 :禁止
404 :見つかりません
405 :メソッドは許可されていません
406 :受け入れられない
407 :プロキシ認証が必要
408 :リクエストのタイムアウト
409 :競合
410 :なくなった
411 :必要な長さ
412 :前提条件が失敗しました
413 :リクエストエンティティが大きすぎます
414 :リクエスト-URIが長すぎます
415 :サポートされていないメディアタイプ
416 :要求された範囲が満たされていません
417 :期待に失敗しました
418 :私はティーポットです
422 :処理できないエンティティ
423 :ロックされています
424 :メソッドの失敗
426 :アップグレードが必要
428 :前提条件が必要
429 。 "):リクエストが多すぎます
431 :リクエストヘッダーフィールドが大きすぎます
444 :応答なし
451 :法的な理由で利用できません
499 :クライアントクローズリクエスト


5××:サーバーエラー

500 :内部サーバーエラー
501 :実装されていません
502 :不正なゲートウェイ
503 :サービスを利用できません
504 :ゲートウェイタイムアウト
505 :HTTPバージョンはサポートされていません
506 :バリアントもネゴシエートします
507 :ストレージが不十分
508 :ループが検出されました
510 :拡張されていません
511 :ネットワーク認証が必要
599 :ネットワーク接続タイムアウトエラー

ソース

1
Gadget Guru

すべてのErrorDocumentを1行で処理する方法が見つかりません。ただし、すべてのリダイレクトを書き出す必要はありません。 ErrorCodeをPHPで渡すことができます:

$response_code = http_response_code()

私の.htaccessは次のようになります

ErrorDocument 401 /error.php
ErrorDocument 402 /error.php
ErrorDocument 403 /error.php
ErrorDocument 404 /error.php
ErrorDocument 500 /error.php
1
R0b1ns