Versión 2.4 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.