Директива Single ErrorDocument для перехвата всех ошибок (.htaccess) - PullRequest
37 голосов
/ 10 апреля 2010

Существует ли что-то наподобие директивы с подстановочными знаками, чтобы перехватывать все возможные ошибки и обрабатывать их на одной пользовательской странице ошибок?

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

Я знаю, что, вероятно, я не буду иметь здесь дело с множеством пользовательских страниц ошибок, но мне любопытно по этому поводу.

Ответы [ 4 ]

26 голосов
/ 10 апреля 2010

Это невозможно. У вас должна быть директива ErrorDocument для каждого кода состояния, который вы хотите обрабатывать иначе, чем с обработчиком ошибок по умолчанию.

4 голосов
/ 07 декабря 2010

Вместо того, чтобы передавать код состояния ошибки, вы можете выбрать его в своем скрипте через переменную окружения REDIRECT_STATUS (устанавливается Apache). См .: http://httpd.apache.org/docs/2.0/custom-error.html

0 голосов
/ 13 мая 2019

Для полной справки ... Насколько я мог получить ...

Первый - .htacess отформатирован

Второй - Описания.

Все это я нашел здесь -> https://httpstatuses.com/

Это все коды, а не только ошибки .. Некоторые сломают ваш сайт. .

ErrorDocument 100 https://EXAMPLE.com
ErrorDocument 101 https://EXAMPLE.com
ErrorDocument 102 https://EXAMPLE.com
ErrorDocument 200 https://EXAMPLE.com
ErrorDocument 201 https://EXAMPLE.com
ErrorDocument 202 https://EXAMPLE.com
ErrorDocument 203 https://EXAMPLE.com
ErrorDocument 204 https://EXAMPLE.com
ErrorDocument 205 https://EXAMPLE.com
ErrorDocument 206 https://EXAMPLE.com
ErrorDocument 207 https://EXAMPLE.com
ErrorDocument 208 https://EXAMPLE.com
ErrorDocument 226 https://EXAMPLE.com
ErrorDocument 300 https://EXAMPLE.com
ErrorDocument 301 https://EXAMPLE.com
ErrorDocument 302 https://EXAMPLE.com
ErrorDocument 303 https://EXAMPLE.com
ErrorDocument 304 https://EXAMPLE.com
ErrorDocument 305 https://EXAMPLE.com
ErrorDocument 307 https://EXAMPLE.com
ErrorDocument 308 https://EXAMPLE.com
ErrorDocument 400 https://EXAMPLE.com
ErrorDocument 401 https://EXAMPLE.com
ErrorDocument 402 https://EXAMPLE.com
ErrorDocument 403 https://EXAMPLE.com
ErrorDocument 404 https://EXAMPLE.com
ErrorDocument 405 https://EXAMPLE.com
ErrorDocument 406 https://EXAMPLE.com
ErrorDocument 407 https://EXAMPLE.com
ErrorDocument 408 https://EXAMPLE.com
ErrorDocument 409 https://EXAMPLE.com
ErrorDocument 410 https://EXAMPLE.com
ErrorDocument 411 https://EXAMPLE.com
ErrorDocument 412 https://EXAMPLE.com
ErrorDocument 413 https://EXAMPLE.com
ErrorDocument 414 https://EXAMPLE.com
ErrorDocument 415 https://EXAMPLE.com
ErrorDocument 416 https://EXAMPLE.com
ErrorDocument 417 https://EXAMPLE.com
ErrorDocument 418 https://EXAMPLE.com
ErrorDocument 421 https://EXAMPLE.com
ErrorDocument 422 https://EXAMPLE.com
ErrorDocument 423 https://EXAMPLE.com
ErrorDocument 424 https://EXAMPLE.com
ErrorDocument 426 https://EXAMPLE.com
ErrorDocument 428 https://EXAMPLE.com
ErrorDocument 429 https://EXAMPLE.com
ErrorDocument 431 https://EXAMPLE.com
ErrorDocument 444 https://EXAMPLE.com
ErrorDocument 451 https://EXAMPLE.com
ErrorDocument 499 https://EXAMPLE.com
ErrorDocument 500 https://EXAMPLE.com
ErrorDocument 501 https://EXAMPLE.com
ErrorDocument 502 https://EXAMPLE.com
ErrorDocument 503 https://EXAMPLE.com
ErrorDocument 504 https://EXAMPLE.com
ErrorDocument 505 https://EXAMPLE.com
ErrorDocument 506 https://EXAMPLE.com
ErrorDocument 507 https://EXAMPLE.com
ErrorDocument 508 https://EXAMPLE.com
ErrorDocument 510 https://EXAMPLE.com
ErrorDocument 511 https://EXAMPLE.com
ErrorDocument 599 https://EXAMPLE.com

Это точная копия Вставить .. Это не мое, однако я переформатировал список выше.

1xx Информационный

100 Продолжить
101 протокол переключения
102 Обработка

2 × × Успех

200 ОК
201 Создано
202 Принято
203 Неофициальная информация
204 Нет содержимого
205 Сбросить содержимое
206 Частичное содержание
207 мульти-статус
208 уже сообщили
226 IM Используется

3 × × Перенаправление

300 Несколько вариантов выбора
301 постоянно перемещено
302 найдено
303 См. Другое
304 Не изменено
305 Использовать прокси
307 Временное перенаправление
Постоянное перенаправление 308

4 × × Ошибка клиента

400 Плохой запрос
401 Несанкционированный
402 Требуется оплата
403 Запрещено
404 Не найдено
405 метод не разрешен
406 Недопустимо
407 Proxy Authentication Required
408 Время ожидания запроса
Конфликт 409
410 ушел
411 Требуемая длина
412 Не выполнено предварительное условие
Слишком большая полезная нагрузка 413
414 URI-запрос слишком длинный
415 неподдерживаемый тип носителя
416 Запрошенный диапазон не удовлетворяется
417 Ожидание не удалось
418 Я чайник
421 Неправильный запрос
422 необработанных объекта
423 заблокировано
424 Неудачная зависимость
426 Требуется обновление
428 Необходимое условие
429 слишком много запросов
431 Слишком большие поля заголовка запроса
444 Соединение закрыто без ответа
451 Недоступно по юридическим причинам
499 Клиент закрыл запрос

5 × × Ошибка сервера

500 Внутренняя ошибка сервера
501 не реализовано
502 Bad Gateway
503 Сервис недоступен
504 Время ожидания шлюза
Версия HTTP 505 не поддерживается
506 вариант также ведет переговоры
507 Недостаточно памяти
508 Обнаружена петля
510 не продлен
511 Требуется сетевая аутентификация
599 Ошибка тайм-аута сетевого подключения

0 голосов
/ 18 августа 2018

Я не нашел способа обработать все ErrorDocument одной строкой. Но вам не нужно выписывать все перенаправления. Вы можете передать код ошибки в 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
...