Apache Версия 2.0 Сервера HTTP
дополнительные функциональные возможности позволяют webmasters формировать ответ Apacheа к некоторой ошибке или проблеме.
настраиваемые ответы могут быть определены, чтобы быть активизированными в случае обнаруженной ошибки сервера или проблемы.
если подлинник разбивает и производит "500 Ошибочных ответов" Сервера, то этот ответ может быть заменен или с некоторым friendlier текстом или переназначением к другому URL (местный или внешний).
NCSA httpd 1.3 возвратил бы некоторое скучное старое сообщение ошибки/проблемы, которое часто будет бессмысленно пользователю, и не обеспечило бы никаких средств заготовки леса признаков, которые вызвали это.
серверу можно спросить:
переадресовывание к другому URL может быть полезным, но только если немного информации можно передать, который может тогда использоваться, чтобы объяснить и/или регистрировать ошибку/проблему более ясно.
чтобы достигать этого, Apache определит новые CGI-подобные переменные окружающей среды:
REDIRECT_HTTP_ACCEPT=*/*, image/gif, image/x-xbitmap, image/jpeg
REDIRECT_HTTP_USER_AGENT=Mozilla/1.1b2 (X11; I; HP-UX A.09.05 9000/712)
REDIRECT_PATH=.:/bin:/usr/local/bin:/etc
REDIRECT_QUERY_STRING=
REDIRECT_REMOTE_ADDR=121.345.78.123
REDIRECT_REMOTE_HOST=ooh.ahhh.com
REDIRECT_SERVER_NAME=crash.bang.edu
REDIRECT_SERVER_PORT=80
REDIRECT_SERVER_SOFTWARE=Apache/0.8.15
REDIRECT_URL=/cgi-bin/buggy.pl
отметить
REDIRECT_
приставка.
по крайней мере
REDIRECT_URL
и
REDIRECT_QUERY_STRING
будет передаваться к новому URL (предполагающий, что это - cgi-подлинник или cgi-включение). Другие переменные будут существовать, только если они существовали до ошибки/проблемы.
ни один
из них будет установлен если ваш
ErrorDocument
является
внешний
переадресовать (что - нибудь начинающееся со схемы называет
http:
, даже если это именует того же самого хозяина как сервер).
использование
ErrorDocument
позволяется для .htaccess файлов когда
AllowOverride
установлен соответственно.
вот - некоторые примеры...
ErrorDocument 500 /cgi-bin/crash-recover
ErrorDocument 500 "Sorry, our script crashed. Oh dear"
ErrorDocument 500 http://xxx/
ErrorDocument 404 /Lame_excuses/not_found.html
ErrorDocument 401 /Subscription/how_to_subscribe.html
синтаксис,
ErrorDocument <3-digit-code> <action>
где действие может быть,
поведение Apacheа к переадресованным URL было изменено так, чтобы дополнительные переменные окружающей среды были доступны для script/server-include.
Стандартные вары CGI были сделаны доступный к подлиннику, который был переадресован к. Никакой признак того, куда переназначение прибыло от, не обеспечивался.
новая партия переменных окружающей среды будет калиброваться для использования подлинником, который был переадресован к. Каждая новая переменная будет иметь приставку
REDIRECT_
.
REDIRECT_
переменные окружающей среды созданы от переменных окружающей среды CGI, которые существовали до переадресовывания, они переименованы с a
REDIRECT_
приставка,
то есть.
,
HTTP_USER_AGENT
становится
REDIRECT_HTTP_USER_AGENT
. в дополнение к этим новым переменным, определит Apache
REDIRECT_URL
и
REDIRECT_STATUS
помогать подлиннику прослеживать его происхождение. И оригинальный URL и URL, переадресовываемый к могут быть загружены регистрация доступа.
если ErrorDocument определяет, что местный житель переадресовывает к подлиннику CGI, подлинник должен включить "
Status:
"область удара головой в ее продукции, чтобы гарантировать распространение полностью назад клиенту ошибочного условия, которое заставило это быть призванным. Например, Perl ErrorDocument подлинник мог бы включить следующее:
...
print "Content-type: text/html\n";
printf "Status: %s Condition Intercepted\n", $ENV{"REDIRECT_STATUS"};
...
если подлинник посвящен обработке специфического ошибочного условия, типа
404 Not Found
, это может использовать определенный кодекс и ошибочный текст вместо этого.
отметить что подлинник
должен
испустить соответствующее
Status:
удар головой (, типа
302 Found
), если ответ содержит a
Location:
удар головой (чтобы выпускать сторону клиента переадресовывают). Иначе
Location:
удар головой не может иметь никакого эффекта.