Äîêóìåíò âçÿò èç êýøà ïîèñêîâîé ìàøèíû. Àäðåñ
îðèãèíàëüíîãî äîêóìåíòà
: http://www.arcetri.astro.it/manual/es/custom-error.html
Äàòà èçìåíåíèÿ: Mon Jan 21 19:44:30 2013 Äàòà èíäåêñèðîâàíèÿ: Fri Feb 28 01:03:31 2014 Êîäèðîâêà: Ïîèñêîâûå ñëîâà: ï ï ï ï ï ï ï ï ï ï ï ï ï ï ï ï ï ï ï ï ï ï ï |
VersiÑn 2.2 del Servidor HTTP Apache
Apache ofrece la posibilidad de que los webmasters puedan configurar las respuestas que muestra el servidor Apache cuando se producen algunos errores o problemas.
Las respuestas personalizadas pueden definirse para activarse en caso de que el servidor detecte un error o problema.
Si un script termina de forma anormal y se produce una respuesta "500 Server Error", esta respuesta puede ser sustituida por otro texto de su elecciÑn o por una redirecciÑn a otra URL (local o externa).
NCSA httpd 1.3 devolvÌa mensajes antiguos del error o problema encontrado que con frecuencia no tenÌan significado alguno para el usuario, y que no incluÌan en los logs informaciÑn que diera pistas sobre las causas de lo sucedido.
Se puede hacer que el servidor siga uno de los siguientes comportamientos:
Redireccionar a otra URL puede resultar de utilidad, pero solo si con ello se puede tambiÈn pasar alguna informaciÑn que pueda explicar el error o problema y/o registrarlo en el log correspondiente mÀs claramente.
Para conseguir esto, Apache define ahora variables de entorno similares a las de los 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
Tenga en cuenta el prefijo REDIRECT_
.
Al menos REDIRECT_URL
y
REDIRECT_QUERY_STRING
se pasarÀn a la nueva
URL (asumiendo que es un cgi-script o un cgi-include). Las otras
variables existirÀn solo si existÌan antes de aparecer
el error o problema. Ninguna de estas variables
se crearÀ si en la directiva ErrorDocument
ha especificado una
redirecciÑn externa (cualquier cosa que empiece
por un nombre de esquema del tipo http:
, incluso si
se refiere al mismo servidor).
El uso de ErrorDocument
estÀ activado para los ficheros .htaccess cuando AllowOverride
tiene el valor
adecuado.
AquÌ hay algunos ejemplos mÀs...
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
La sintaxis es,
ErrorDocument <3-digit-code> <action>
donde action puede ser,
El comportamiento de Apache en cuanto a las redirecciones ha cambiado para que puedan usarse mÀs variables de entorno con los script/server-include.
Las variables CGI estÀndar estaban disponibles para el script al que se hacÌa la redirecciÑn. No se incluÌa ninguna indicaciÑn sobre la precedencia de la redirecciÑn.
Un nuevo grupo de variables de entorno se inicializa para que
las use el script al que ha sido redireccionado. Cada
nueva variable tendrÀ el prefijo REDIRECT_
.
Las variables de entorno REDIRECT_
se crean a
partir de de las variables de entorno CGI que existen antes de
la redirecciÑn, se les cambia el nombre
aßadiÈndoles el prefijo REDIRECT_
, por
ejemplo, HTTP_USER_AGENT
pasa a ser
REDIRECT_HTTP_USER_AGENT
. AdemÀs, para esas
nuevas variables, Apache definirÀ REDIRECT_URL
y REDIRECT_STATUS
para ayudar al script a seguir su
origen. Tanto la URL original como la URL a la que es redirigida
la peticiÑn pueden almacenarse en los logs de acceso.
Si ErrorDocument especifica una redirecciÑn local a un
script CGI, el script debe incluir una campo de cabeceraa
"Status:
" en el resultado final para asegurar que
es posible hacer llegar al cliente de vuelta la condiciÑn
de error que lo provocÑ. Por ejemplo, un script en Perl
para usar con ErrorDocument podrÌa incluir lo
siguiente:
...
print "Content-type: text/html\n";
printf "Status: %s Condition Intercepted\n", $ENV{"REDIRECT_STATUS"};
...
Si el script tiene como fin tratar una determinada
condiciÑn de error, por ejemplo
404 Not Found
, se pueden usar los
cÑdigos de error y textos especÌficos en su lugar.
Tenga en cuenta que el script debe incluir un campo
de cabecera Status:
apropiado (como
302 Found
), si la respuesta contiene un campo de
cabecera Location:
(para poder enviar una
redirecciÑn que se interprete en el cliente). De otra
manera, la cabecera
Location:
puede que no tenga efecto.