Apache – Personalizar páginas de error

En este post vamos a hablar sobre cómo personalizar nuestras páginas de error en el servidor web Apache en Debian, hay varias formas de indicar una página de error y hablaremos sobre las maneras más frecuentes de personalizarlo. Para indicar las páginas de error de Apache podemos usar una configuración en el fichero .htaccess, éste fichero está situado en la ruta raíz de nuestro sitio web y nos permite añadir cierta configuración que afectará al directorio donde se encuentre el fichero. También podemos indicar las páginas de error en el fichero de host virtual, lo cual está explicado más abajo.

En este caso usaremos un fichero .htaccess con el que podemos indicar una configuración a cada directorio de nuestro servidor web (si no lo tenemos, lo podemos crear manualmente), para poderlo utilizar necesitamos tener la configuración adecuada en el virtual host, en este caso es la opción AllowOverride, podéis comprobarlo en el ejemplo del final del post. La orden usada para las páginas de error es ErrorDocument, seguidamente se escribe el código de error y la ruta hacia la página de error.

ErrorDocument 404 var/www/404.html

Podemos incrustar directamente código HTML en el fichero htaccess si no queremos crear ningún archivo HTML de página de error. El código hay que escribirlo entre comillas, pudiendo así ocupar varias líneas de ser necesario.

ErrorDocument 404 "<H1>Pagina no encontrada - 404</H1>"
ErrorDocument 403 "<head><title>ERROR 403<title></head>
 <body> <h1>NO TIENE PERMISO</h1></body>"

También podemos introducir la url de un sitio externo.

ErrorDocument 403 http://mierror.com/403.html

Configurar páginas de error directamente en la configuración del host.

A algunos administradores de sistemas no les gusta delegar privilegios en ficheros de tipo .htaccess y algunos prefieren añadir las páginas de error directamente en la entrada de nuestro host virtual, en un post anterior indicábamos cómo crear un virtual host en apache2. Podemos configurarlo directamente en el fichero /etc/apache/sites-enabled/000-default.conf o podemos aplicarlo a cada host virtual que tengamos en su respectivo fichero de configuración en la carpeta «/etc/apache2/sites-enabled«. Aquí os dejo un ejemplo de fichero de host virtual donde le hemos añadido las páginas de error:

<VirtualHost *:80>
    ServerAdmin webmaster@miservidor.com
    ServerName miservidor.com
    ServerAlias www.miservidor.com *.miservidor.com miservidor.com
    DocumentRoot /var/www/miservidor
    <Directory />
        Options -Indexes FollowSymLinks
        AllowOverride None
    </Directory>
    <Directory /var/www/miservidor>
        Options -Indexes FollowSymLinks
        AllowOverride All
        Order allow,deny
        allow from all
    </Directory>

    #Aqui comienzan las páginas de errores
    ErrorDocument 404 /var/www/error/404.php
    ErrorDocument 403 /var/www/error/403.html
</VirtualHost>

De la misma forma que en el fichero htaccess, podemos utilizar páginas locales, urls externas o directamente código html. Si necesitamos revisar la sintaxis de los ficheros de configuración lo haremos con el comando «apache2ctl configtest«. Por último, siempre que toquemos esta clase de ficheros tendremos que recargar la configuración de apache o reiniciar el servicio. Saludos!