Подтвердить что ты не робот

Единая директива ErrorDocument для обнаружения всех ошибок (.htaccess)

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

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

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

4b9b3361

Ответ 1

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

Ответ 2

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

Ответ 3

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

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

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

Все это я нашел здесь → httpstatuses.com

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

Используйте как:

ErrorDocument 100 https://EXAMPLE.com

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


(Наведите курсор для описания, нажмите для подробностей.)

1 × ×: информационный

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: требуется проверка подлинности прокси
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: ошибка тайм-аута сетевого подключения

(Источник)

Ответ 4

Я не нашел способ обрабатывать все 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