1 <?xml version="1.0" encoding="UTF-8" ?>
2 <!DOCTYPE manualpage SYSTEM "./style/manualpage.dtd">
3 <?xml-stylesheet type="text/xsl" href="./style/manual.es.xsl"?>
4 <!-- English Revision: 420990 -->
7 Licensed to the Apache Software Foundation (ASF) under one or more
8 contributor license agreements. See the NOTICE file distributed with
9 this work for additional information regarding copyright ownership.
10 The ASF licenses this file to You under the Apache License, Version 2.0
11 (the "License"); you may not use this file except in compliance with
12 the License. You may obtain a copy of the License at
14 http://www.apache.org/licenses/LICENSE-2.0
16 Unless required by applicable law or agreed to in writing, software
17 distributed under the License is distributed on an "AS IS" BASIS,
18 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
19 implied. See the License for the specific language governing
20 permissions and limitations under the License. -->
22 <manualpage metafile="custom-error.xml.meta">
24 <title>Respuestas de error personalizadas</title>
27 <p>Apache ofrece la posibilidad de que los webmasters puedan
28 configurar las respuestas que muestra el servidor Apache cuando se
29 producen algunos errores o problemas.</p>
31 <p>Las respuestas personalizadas pueden definirse para activarse
32 en caso de que el servidor detecte un error o problema.</p>
34 <p>Si un script termina de forma anormal y se produce una respuesta
35 "500 Server Error", esta respuesta puede ser sustituida por otro
36 texto de su elección o por una redirección a otra URL
37 (local o externa).</p>
40 <section id="behavior">
41 <title>Comportamiento</title>
44 <title>Comportamiento anterior</title>
46 <p>NCSA httpd 1.3 devolvía mensajes antiguos del error o
47 problema encontrado que con frecuencia no tenían
48 significado alguno para el usuario, y que no incluían en
49 los logs información que diera pistas sobre las causas de
54 <title>Comportamiento actual</title>
56 <p>Se puede hacer que el servidor siga uno de los siguientes
60 <li>Desplegar un texto diferente, en lugar de los mensajes de
63 <li>redireccionar la petición a una URL local, o</li>
65 <li>redireccionar la petición a una URL externa.</li>
68 <p>Redireccionar a otra URL puede resultar de utilidad, pero
69 solo si con ello se puede también pasar alguna
70 información que pueda explicar el error o problema y/o
71 registrarlo en el log correspondiente más claramente.</p>
73 <p>Para conseguir esto, Apache define ahora variables de entorno
74 similares a las de los CGI:</p>
77 REDIRECT_HTTP_ACCEPT=*/*, image/gif, image/x-xbitmap,
79 REDIRECT_HTTP_USER_AGENT=Mozilla/1.1b2 (X11; I; HP-UX A.09.05
81 REDIRECT_PATH=.:/bin:/usr/local/bin:/etc<br />
82 REDIRECT_QUERY_STRING=<br />
83 REDIRECT_REMOTE_ADDR=121.345.78.123<br />
84 REDIRECT_REMOTE_HOST=ooh.ahhh.com<br />
85 REDIRECT_SERVER_NAME=crash.bang.edu<br />
86 REDIRECT_SERVER_PORT=80<br />
87 REDIRECT_SERVER_SOFTWARE=Apache/0.8.15<br />
88 REDIRECT_URL=/cgi-bin/buggy.pl
91 <p>Tenga en cuenta el prefijo <code>REDIRECT_</code>.</p>
93 <p>Al menos <code>REDIRECT_URL</code> y
94 <code>REDIRECT_QUERY_STRING</code> se pasarán a la nueva
95 URL (asumiendo que es un cgi-script o un cgi-include). Las otras
96 variables existirán solo si existían antes de aparecer
97 el error o problema. <strong>Ninguna</strong> de estas variables
98 se creará si en la directiva <directive
99 module="core">ErrorDocument</directive> ha especificado una
100 redirección <em>externa</em> (cualquier cosa que empiece
101 por un nombre de esquema del tipo <code>http:</code>, incluso si
102 se refiere al mismo servidor).</p>
106 <section id="configuration">
107 <title>Configuración</title>
109 <p>El uso de <directive module="core">ErrorDocument</directive>
110 está activado para los ficheros .htaccess cuando <directive
111 module="core">AllowOverride</directive> tiene el valor
114 <p>Aquí hay algunos ejemplos más...</p>
117 ErrorDocument 500 /cgi-bin/crash-recover <br />
118 ErrorDocument 500 "Sorry, our script crashed. Oh dear" <br />
119 ErrorDocument 500 http://xxx/ <br />
120 ErrorDocument 404 /Lame_excuses/not_found.html <br />
121 ErrorDocument 401 /Subscription/how_to_subscribe.html
124 <p>La sintaxis es,</p>
127 ErrorDocument <3-digit-code> <action>
130 <p>donde action puede ser,</p>
133 <li>Texto a mostrar. Ponga antes del texto que quiere que se
134 muestre unas comillas ("). Lo que sea que siga a las comillas se
135 mostrará. <em>Nota: las comillas (") no se
138 <li>Una URL local a la que se redireccionará la
141 <li>Una URL externa a la que se redireccionará la
146 <section id="custom">
147 <title>Mesajes de error personalizados y redirecciones</title>
149 <p>El comportamiento de Apache en cuanto a las redirecciones ha
150 cambiado para que puedan usarse más variables de entorno con
151 los script/server-include.</p>
154 <title>Antiguo comportamiento</title>
156 <p>Las variables CGI estándar estaban disponibles para el
157 script al que se hacía la redirección. No se incluía
158 ninguna indicación sobre la precedencia de la
159 redirección.</p>
163 <title>Nuevo comportamiento</title>
165 <p>Un nuevo grupo de variables de entorno se inicializa para que
166 las use el script al que ha sido redireccionado. Cada
167 nueva variable tendrá el prefijo <code>REDIRECT_</code>.
168 Las variables de entorno <code>REDIRECT_</code> se crean a
169 partir de de las variables de entorno CGI que existen antes de
170 la redirección, se les cambia el nombre
171 añadiéndoles el prefijo <code>REDIRECT_</code>, por
172 ejemplo, <code>HTTP_USER_AGENT</code> pasa a ser
173 <code>REDIRECT_HTTP_USER_AGENT</code>. Además, para esas
174 nuevas variables, Apache definirá <code>REDIRECT_URL</code>
175 y <code>REDIRECT_STATUS</code> para ayudar al script a seguir su
176 origen. Tanto la URL original como la URL a la que es redirigida
177 la petición pueden almacenarse en los logs de acceso.</p>
179 <p>Si ErrorDocument especifica una redirección local a un
180 script CGI, el script debe incluir una campo de cabeceraa
181 "<code>Status:</code>" en el resultado final para asegurar que
182 es posible hacer llegar al cliente de vuelta la condición
183 de error que lo provocó. Por ejemplo, un script en Perl
184 para usar con ErrorDocument podría incluir lo
189 print "Content-type: text/html\n"; <br />
190 printf "Status: %s Condition Intercepted\n", $ENV{"REDIRECT_STATUS"}; <br />
194 <p>Si el script tiene como fin tratar una determinada
195 condición de error, por ejemplo
196 <code>404 Not Found</code>, se pueden usar los
197 códigos de error y textos específicos en su lugar.</p>
199 <p>Tenga en cuenta que el script <em>debe</em> incluir un campo
200 de cabecera <code>Status:</code> apropiado (como
201 <code>302 Found</code>), si la respuesta contiene un campo de
202 cabecera <code>Location:</code> (para poder enviar una
203 redirección que se interprete en el cliente). De otra
205 <code>Location:</code> puede que no tenga efecto.</p>