Apache. Документация на русском


Разделы:   1      2      3    4    5    6    7    8    9    10    11    12    13    14    15    16  

Раздел 2. Использование HTTP-сервера Apache

Пункты:   6    7    8    9    10    11    12    13    14    15    16      17      18    19    20    21    22    23    24    25    26  

 <         > 
  RU            EN  

Пункт 17. Пользовательские сообщения об ошибках

Хотя HTTP-сервер Apache предоставляет общие ответы об ошибках в случае кодов состояния HTTP 4xx или 5xx, эти ответы довольно резкие, неинформативные и могут пугать пользователей сайта. Возможно, вы захотите предоставить настраиваемые ответы на ошибки, которые будут либо более удобными, либо на каком-либо языке, отличном от английского, или, возможно, которые будут оформлены в соответствии с макетом вашего сайта.

Индивидуальные ответы об ошибках могут быть определены для любого кода состояния HTTP, обозначенного как состояние ошибки, то есть для любого состояния 4xx или 5xx.

Кроме того, предоставляется набор значений, чтобы документ об ошибке можно было дополнительно настроить на основе значений этих переменных с помощью включений на стороне сервера. Или вы можете иметь условия ошибок, обрабатываемые программой cgi или другим динамическим обработчиком (PHP, mod_perl и т. д.), который использует эти переменные.

Конфигурация

Пользовательские документы об ошибках настраиваются с помощью ErrorDocument директивы, которая может использоваться в глобальном контексте, в контексте виртуального хоста или каталога. Его можно использовать в файлах .htaccess, если AllowOverride установлено значение FileInfo.

 ErrorDocument 500 "Извините, наш скрипт дал сбой. О боже"
ErrorDocument 500 /cgi-bin/crash-recover
ErrorDocument 500 http://error.example.com/server_error.html
Документ об ошибке 404 /errors/not_found.html
Документ об ошибке 401 /subscription/how_to_subscribe.html 

Синтаксис директивы ErrorDocument следующий:

 ErrorDocument <трехзначный код> <действие> 

где действие будет рассматриваться как:

  1. Локальный URL-адрес для перенаправления (если действие начинается с «/»).
  2. Внешний URL-адрес для перенаправления (если действие является допустимым URL-адресом).
  3. Отображаемый текст (если ни один из вышеперечисленных). Текст должен быть заключен в кавычки (""), если он состоит из более чем одного слова.

При перенаправлении на локальный URL-адрес устанавливаются дополнительные переменные среды, чтобы ответ можно было дополнительно настроить. Они не отправляются на внешние URL-адреса.

Доступные переменные

Перенаправление на другой URL-адрес может быть полезным, но только в том случае, если может быть передана некоторая информация, которую затем можно использовать для более четкого объяснения или регистрации состояния ошибки.

Для этого при отправке перенаправления ошибки будут установлены дополнительные переменные среды, которые будут сгенерированы из заголовков, предоставленных исходному запросу, путем добавления «REDIRECT_» к имени исходного заголовка. Это обеспечивает документ об ошибке контекст исходного запроса.

Например, в дополнение к более обычным переменным среды вы можете получить следующее.

REDIRECT_HTTP_ACCEPT=*/*, image/gif, image/jpeg, image/png
REDIRECT_HTTP_USER_AGENT=Mozilla/5.0 Fedora/3.5.8-1.fc12 Firefox/3.5.8
REDIRECT_PATH=.:/bin:/usr/local/bin:/sbin
REDIRECT_QUERY_STRING=
REDIRECT_REMOTE_ADDR=121.345.78.123
REDIRECT_REMOTE_HOST=client.example.com
REDIRECT_SERVER_NAME=www.example.edu
REDIRECT_SERVER_PORT=80
REDIRECT_SERVER_SOFTWARE=Apache/2.2.15
REDIRECT_URL=/cgi-bin/buggy.pl

REDIRECT_ переменные среды создаются из переменных среды, существовавших до перенаправления. Они переименовываются с REDIRECT_ префиксом, т.е. становятся . HTTP_USER_AGENT REDIRECT_HTTP_USER_AGENT

REDIRECT_URL , REDIRECT_STATUS и REDIRECT_QUERY_STRING гарантированно будут установлены, а другие заголовки будут установлены только в том случае, если они существовали до возникновения ошибки.

Ни один из них не будет установлен, если ErrorDocument целью является внешнее перенаправление (любое, начинающееся с имени схемы, например http: , даже если оно относится к тому же хосту, что и сервер).

Настройка ответов на ошибки

Если вы укажете ErrorDocument какой-либо динамический обработчик, такой как включаемый документ на стороне сервера, сценарий CGI или какой-либо другой обработчик, вы можете использовать доступные настраиваемые переменные среды для настройки этого ответа.

Если ErrorDocument задает локальное перенаправление на сценарий CGI, сценарий должен включать Status: поле заголовка " " в свои выходные данные, чтобы обеспечить распространение до клиента состояния ошибки, вызвавшего его вызов. Например, сценарий Perl ErrorDocument может включать следующее:

 ...
print "Тип контента: text/html\n";
printf "Статус: %s условие перехвачено\n", $ENV{"REDIRECT_STATUS"};
... 

Если сценарий предназначен для обработки определенного состояния ошибки, например 404 Not Found , он может вместо этого использовать определенный код и текст ошибки.

Обратите внимание: если ответ содержит Location: заголовок (чтобы выполнить перенаправление на стороне клиента), сценарий должен выдать соответствующий Status: заголовок (например, 302 Found ). В противном случае Location: заголовок может не иметь никакого эффекта.

Многоязычные пользовательские документы об ошибках

При установке Apache HTTP Server предоставляется каталог пользовательских документов об ошибках, переведенных на 16 различных языков. В каталоге конфигурации также есть файл конфигурации conf/extra , который можно включить для включения этой функции.

В файле конфигурации вашего сервера вы увидите строку, например:

 # Многоязычные сообщения об ошибках
# Включить conf/extra/httpd-multilang-errordoc.conf 

Раскомментирование этой Include строки активирует эту функцию и предоставит сообщения об ошибках с согласованием языка на основе языковых предпочтений, установленных в клиентском браузере.

Кроме того, эти документы содержат различные переменные REDIRECT_ , чтобы конечный пользователь мог получить дополнительную информацию о том, что произошло и что он может сделать сейчас.

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

mod_include и mod_negotiation должен быть включен, чтобы использовать эту функцию.



 <         > 

Пункты:   6    7    8    9    10    11    12    13    14    15    16      17      18    19    20    21    22    23    24    25    26  

Рейтинг@Mail.ru