Personalizar la página de error 404
Seguimos con el error 404. Si días atrás hablábamos de cómo personalizarlo desde WordPress, hoy hablaremos de cómo configurarlo de manera general desde el servidor.
Recordemos el 404. Cuando se intenta acceder a una página que no existe, el servidor devuelve un mensaje de error 404. Normalmente los navegadores tienen su propia página que muestra ese error (Firefox incluyó la suya a partir de la version 1.5). Personalizar nuestra propia página de error nos puede dar una mayor funcionalidad y no perder la estética de nuestro sitio.
Personalizar la página de error en Apache es algo sencillo que se puede realizar en un par de pasos:
- Editamos el fichero httpd.conf
(que se encuentra en el directorio [ruta hasta el diretorio de Apache]/conf) e incluimos la siguiente línea (si no existe):
ErrorDocument 404 /[path]/[pagina404]
Un ejemplo sería el siguiente:
ErrorDocument 404 /error404.html
También se puede crear un fichero con el nombre .htaccess, que contenga la línea anterior y subirla al directorio raíz.
- Creamos una página web que muestre nuestro mensaje de error personalizado y lo situamos en la ruta indicada en la directiva ErrorDocument. En el ejemplo anterior sería crearnos el fichero error404.html y situarlo en el directorio raíz.
Dar más funcionalidad a nuestra página de error
Algo que se podría incluir sería avisar sobre el error que se ha producido accediendo a la página errónea y mostrar posibilidades de navegación para que el usuario siga visitando nuestras páginas, haciendo una llamada a nuestro buscador de contenidos y mostrando los resultados. Para ello obtenemos la última palabra de la url (que suele ser la que contiene más información) y la usamos en nuestro motor de búsqueda (también se podría hacer con todas las palabras de la url).
Vamos a mostrar un script PHP de ejemplo de nuestra página personalizada de error. Lo primero es crear la cabecera del documento HTML:
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"xhtml1-transitional.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
<!-- Se incluyen los estilos -->
<link rel="stylesheet" type="text/css" href="estilos.css" />
</head>
Seguimos con el cuerpo del HTML, intentando seguir el mismo diseño que el resto del sitio (nunca se debe perder nuestra identidad) y mostramos el mensaje de error:
<body>
<!-- Cabecera de la página, no debe ser simplemente texto -->
<p class="error">La página a la que ha accedido no existe:</p>
<?php
// La variable $_SERVER almacena
// entre otras cosas la URL solicitada
$pagina = $_SERVER['REQUEST_URI'];
?>
<p><?php echo $pagina; ?></p>
Y por último, obtenemos la última palabra de la URL y la usamos con nuestro motor de búsqueda.
<p>Páginas relacionadas:</p>
<?php
// Obtenemos la última palabra
// Si la URL acaba en "/" lo quitamos
if (strrpos($pagina, "/") == strlen($pagina) -1) {
$pagina = substr($pagina, 0, strlen($pagina)-2);
}
// Obtenemos la parte de la URL que va desde
// la última aparición de la barra "/"
// hasta el final
$ultimaPalabra = substr($pagina, strrpos($pagina, "/")+1);
// Eliminamos la extensión del script (.jsp, .php, ...)
$ultimaPalabra = substr($ultimaPalabra, 0, strrpos($ultimaPalabra, "."));
// Realizamos la llamada al proceso de búsqueda en nuestra web
// con lo obtenido en $ultimaPalabra
// Mostramos los resultados
?>
</body>
</html>
Debes tener cuidado con la primera línea (<?xml …), ya que si tienes activado los tags cortos en PHP va a darte error. Para desactivarlos tienes que modificar en el php.ini el siguiente valor:
short_open_tag = Off