Página 404 personalizada Apache y Nginx

Escrito por:
Fecha: 2013-05-18 10:40:13 00:00

Versión en ingles

Cuando se tiene una aplicacion dinámica detras de Apache o Nginx, como ser un CMS en PHP como Wordpress or Drupal, o en otro caso, se tiene una aplicacion corriendo en Node.js, Django o Ruby on Rails, pues los errores 404 (página no encontrada) son manejados por dichas aplicaciones directamente.

El problema surge, cuando tenemos páginas estáticas, en estos casos, no tenemos una aplicación que pueda hacerce cargo de manejar los errores y cuando vamos a una página que no existe, el servidor nos mostrara su página por defecto. La cual no es de las más vistosas.

Por suerte esto tiene solución y veremos como hacerlo tanto para Apache, como para Nginx. Vamos por pasos.

Crear una página para mostrar en caso de error 404

Vamos a crear un simple esqueleto, pero puedes ser aqui tan creativo como gustes.

  <html>
  <title>Página no encontrada</title>
  <h1>Página no encontrada</h1>
  <p>Lo sentimos mucho, la página que buscas no ha podido ser encontrada, hemos dado aviso a las brigadas de busqueda, pero aún no tenemos noticias suyas.</p>
  <p>Puedes unirte a la busqueda, para ello, dirigite a <a href="/">nuestra página principal</a> y comienza la búsqueda desde alli.</p>
  <p>Muchas gracias por tu comprensión y ayuda, de parte nuestra y de la familia de la página extraviada</p>
  </html>

Bueno ya tenemos una página un tanto dramática, pero que servirá para nuestro propósito. Recuerda el nombre con el que la guardas, en este caso, lo hare en el directorio raíz y con el nombre 404.html

Configura Apache para mostrar una página personalizada para el error 404

Ahora que tenemos nuestra página, hagamos que Apache la use, cuando no encuentre la página solicitada. Lo único que tenemos que hacer editar el archivo de configuración principal de Apache. Normalmente apache.conf o apache2.conf o también httpd.conf

En este archivo, agregamos esta línea.

ErrorDocument 404 /404.html 

Esta línea tambien puede ser agregada en el archivo .htaccess si es que el servidor esta configurado para utilizar .htaccess

Reinicias el Apache y estas listo.

Configura Nginx para mostrar una página personalizada para el error 404

En el caso de Nginx, no es para nada más complicado, solo debes editar otro archivo, en este caso nginx.conf, normalmente localizado en /etc/nginx/ o /etc/nginx/conf/. En este archivo agrega estas líneas.

error_page 404 /404.html;
location  /404.html {
  internal;
}

Nuevamente, ahora es solo cosa de reiniciar el servidor y estas listo.