Configurar página de error 404 en Apache

  • Por
Cómo configurar y personalizar la página de error 404, de página no encontrada, en el servidor Apache con la directiva ErrorDocument.
Las páginas de error 404 son tan típicas que es posible que todos las conozcamos sin hablar más de ellas. Pienso que es difícil encontrar alguien que navegue habitualmente por la Red y no haya reparado en ellas en alguna ocasión, pero aun así la persona que desee saber algo más, puede consultar qué dicen los usuarios de la Wiki en la entrada sobre el error 404.

Apache, el servidor web más utilizado mundialmente, ofrece una sencilla manera de configurar las páginas de error, accesible incluso para las personas que menos experiencia tienen en cuanto a desarrollo de páginas web. En este artículo veremos dos posibles maneras de decirle a nuestro servidor web Apache la página que deseamos se muestre en el caso que se produzca un error 404.

En principio, las dos posibilidades que veremos son independientes una de la otra, por lo que podremos elegir la que más nos convenga, o la que soporte nuestro espacio de alojamiento. Las dos maneras pasan por configurar la variable de sistema "ErrorDocument", que sirve para indicar el documento HTML que tiene que entregarse cuando surja un error de página no encontrada.

Nota: de manera predeterminada, al producirse un error 404, Apache muestra una página de error muy simple, que la verdad es que no ofrece al usuario mucha información útil que le sirva para detectar el motivo del error. Por ello, puede merecer la pena configurar nuestra propia página de error 404 personalizada.

Configuración del error 404 en el httpd.conf

La primera posibilidad para configurar la página de error 404 es editar el archivo principal de configuración de Apache, llamdo httpd.conf. Ese archivo es bastante largo y contiene cientos de configuraciones posibles para el servidor web. En el Manual de Apache ya vimos varios artículos sobre los que tratamos este archivo httpd.conf y las variables principales para su configuración. En concreto, recomendamos leer el artículo Directivas de funcionamiento en httpd.conf (3).

Lo único que tendremos que agregar es una línea donde indiquemos la ruta del archivo que enviar al producirse un error de recurso no encontrado, por medio de la variable "ErrorDocument".

ErrorDocument 404 /mipagina404.html

En este caso, se indicaría que, bajo un error 404, se debe enviar el documento que está en el archivo "mipagina404.html" (o cualquier otro documento que queramos utilizar como página de error). La ruta indicada hacia el archivo comienza por "/", por lo que Apache entenderá que el mismo está en la raíz del dominio.

Nota: Antes de agregar esa línea, deberíamos comprobar si existe en alguna parte del archivo httpd.conf una referencia anterior a esa directiva, haciendo una búsqueda por el texto "ErrorDocument" dentro del archivo. Pero tener en cuenta que en el archivo httpd.conf todas las líneas que empiezan por "#" son comentarios.

Recordar también que, para que los cambios en el httpd.conf hagan efecto, tenemos que guardar el archivo y después reiniciar el servidor Apache.

Configuración de la página de error 404 por .htaccess

En la mayoría de los casos que podamos encontrarnos, en los planes de alojamiento para nuestra web, no nos permitirán editar el httpd.conf, puesto que ese archivo contiene muchas directivas de configuración críticas, que mal editadas podrían dar lugar a funcionamientos erróneos del servidor. Por ello, para configurar nuestro espacio de hosting en Apache seguramente nos venga mucho mejor esta segunda opción.

La segunda posibilidad se trata simplemente de crear un archivo que se llame .htaccess (el archivo empieza por ".", como si no tuviera nombre y sólo se indica esa extensión), donde colocaremos la directiva de configuración "ErrorDocument".

El archivo .htaccess se colocará en la raíz del dominio y tendrá el siguiente contenido.

ErrorDocument 404 /error404.html

Como se puede ver, se indica también la ruta donde estaría la página de error en nuestro sistema. En este caso en un archivo llamado error404.html, que estaría en la raíz del dominio. Obviamente, cada persona colocará el nombre de archivo que quiera utilizar como error 404 y la ruta donde se encuentre ese archivo dentro del dominio.

Nota: Si disponemos ya de un archivo .htaccess en nuestra raíz del dominio, simplemente tendremos que editarlo para incorporar esa línea.

Conclusión y otras referencias sobre error 404

A partir de que hayamos realizado esa configuración podremos acceder a cualquier página que no exista, o cualquier otro tipo de recurso, como una imagen, y ver que Apache nos muestra desde entonces el archivo que hayamos configurado para expresar el error 404.

Como decíamos, los errores 404 son bastante típicos y gracias a esta técnica podemos utilizarlos para redireccionar al usuario hacia otros contenidos o explicarle los motivos del error, así como ofrecerle posibles acciones para solucionarlos o encontrar aquello que buscaba.

En DesarrolloWeb.com tenemos algunas referencias interesantes que quizás te apetezca leer para complementar esta información, como una discusión sobre cómo aumentar la usabilidad de las páginas 404 o problemas de las páginas 404 redireccionadas con PHP, o varios listados de páginas de error 404 originales (I), (II).

Autor

Miguel Angel Alvarez

Miguel es fundador de DesarrolloWeb.com y la plataforma de formación online EscuelaIT. Comenzó en el mundo del desarrollo web en el año 1997, transformando su hobby en su trabajo.

Compartir

Comentarios

Sokerete

12/1/2011
error?404?
Pues vosotros no es que os hayáis currado mucho la página de error 404 de la web, jejeje.

Gracias por la info, la segunda opción para los hosting (.htaccess) no la conocía, muy buena.

MAGM

19/4/2011
buen trabajo
muchas gracias la verdad me ayudo de mucho esta informacion, saludos.

crox

02/6/2011
vamos a probar para verlo en la práctica
http://www.desarrolloweb.com/articulos/404


UUUPS!

woody73

05/6/2013
Problemilla con el Error 404
Hola a todos, lo primero, dar la enhorabuena por esta web que de tantos apuros me ha sacado. Lo segundo, no se si este es el lugar adecuado para lanzar esta pregunta pero no encontre otro sitio.

Y por último, mi problemilla. He seguido los pasos que indicais para "personalizar mi página de error 404" y me funciona perfectamente tanto en Firefoz como en Chrome pero no así en Internet Explorer, que saca una página estándar (imagino que suya propia).

Si alguien puede echarme una mano.....
Muchas gracias

fede

15/6/2014
problemas con nueva pagina de error 403
<Files error.htm>
Order allow,deny
Deny from 192.168.1.132
allow from all
</Files>

ErrorDocument 403 /error/e403.png...por que no me funciona este .htaccess? en lugar del archivo "" me sale un error 500(Internal Server Error)
Gracias, saludos:D

Sergio

18/6/2015
Muchas gracias por tu artículo!
Sencillo y fácil de hacer (he usado la de .htaccess)

Maria Victoria

31/3/2016
Como hacer en un sitio multilenguaje?
Muy interesante el articulo. Quisiera saber cómo hacer cuando se trata de un sitio multilenguaje, de manera que haya una pagina de error para cada idioma. En la raíz del sitio tengo una carpeta fr donde está el sitio en francés, pero si pongo una pagina de error (en francés) dentro de esta carpeta no la tiene en cuenta, por supuesto. Habria alguna forma de especificar diferentes rutas en el archivo htaccses ? Gracias.

Fabian Urbano

25/5/2016
no dijiste nada
Como puedo solucionar el error 404 tengo un programa en http://localhost/htdocs/ejemplo1.php y me dice error 404

Chrismart Anji

26/12/2016
Eso es basico :v (Aqui algo nuevo) :)
Existe otra forma mucho mejor para poner el error 404 y una de esas formas es buscar en la carpeta xampp/apache/error y buscar el archivo que .var que tiene este error luego editarlo :) y poner el error 404 fuera del servidor aunque este se vera UwUr aunque sera imposible acceder a este archivo claro siempre y cuando sepas protegerte de ataques basicos de los "hackers"

<!--#include virtual="include/error_404/es.php" --> esto se lo ponen en español y asi en que cada idioma segun corresponda haciendolo multiidioma y modificado simplemente solo eso si poner el archivo css directamente o si no en el servidor :) dentro de la carpeta htdocs para que me entiendan :D/ espero haigan aprendido algo nuevo y jugar con el lenguaje siempre es bueno te puede enseñar algo nuevo siempre UwUr