Continuando el tema que venia escribiendo de la importancia del manejo de los errores 404 para el posicionamiento ante buscadores, ¿Cómo logramos el manejo de los errores 404?
En cualquier server Web decente podemos poner nuestras propias páginas 404, diseñadas y acomodadas a nuestro gusto.
Para no depender de acciones por parte de los administradores del servidor donde tengamos nuestra Web, o de las posibilidades que ofrezca el panel de control del servidor de hosting, podemos nosotros mismos colocar la siguiente línea en el fichero .htaccess en el caso del Server Web Apache:
ErrorDocument 404 /manipular404.php
… y por supuesto, implementar el php correspondiente para la respuesta, incluso colocar desde allí las notificaciones y procesamiento adicional que se desee.
Aun así el Apache va a desear decirle al navegador (o robot de búsqueda) que esa página de respuestas es un error 404, lo cual podemos evitar colocando la siguiente linea al inicio del PHP:
header("HTTP/1.1 200 OK");
… la cual indica que la respuesta es un 200 OK, la respuesta normal del browser.
De todas formas el Apache en sus logs internos guardará que eso fue un error 404 lo cual nos afecta la calidad de las estadísticas, pues no fue una visita perdida como tal, y desde este punto de vista se pierde en algo la utilidad de las estadísticas, aunque hay servicios de estadisticas web online que no requieren de usar los registros internos del servidor Web.
En el caso del IIS podemos ir a la consola de administración de este y especificar con que página (ya sea asp, php, o el script que soporte el servidor) queremos dar respuesta a un error 404 en un sitio determinado.
Eso es una solución, pero ya veíamos que hay soluciones mejores.
En el caso particular del servidor Web apache podemos activar el modulo mod_rewrite, el cual nos permitirá ciertas libertades muy interesantes, aplicables no solo a este manejo de errores.
Si colocamos esto en el .htaccess:
RewriteEngine On
RewriteRule (.*) index.php
… entonces todos los pedidos a al apache irán a parar a el fichero index.php, desde el cual podemos obtener el camino solicitado y dar la respuesta con los contenidos correspondientes.
Este es el método usado en este sitio. Es uno de los de mejores resultados, queda muy clara la estructura del sitio desde el punto de vista de almacenamiento físico, y mantiene consistentes los logs del servidor Web para usarlos para funciones estadísticas.
Bueno, un detalle, las imágenes por ejemplo, y quizás la carpeta del sistema de administración de contenidos que queramos dejar pasar para ser manipulados por el Apache, para esto podemos añadir unas líneas como las siguientes:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
…y listo el problema.
Ahora, muy importante, que respuesta deben dar esas páginas que hemos colocado ¿? Si van a dar como respuesta un 200 OK y va a estar el mismo contenido en varias direcciones podemos ser penalizados por los robots de búsqueda. La idea definitiva por ahora parece ser una redirección 301, es decir:
header( "HTTP/1.1 301 Moved Permanently" );
header( "Location: /" );
?>
Eso redirecciona a los usuarios hacia la página que deseemos, igual que a los buscadores (sin ser penalizados), y de paso le indica a los buscadores que la página ha sido movida permanentemente y que pasen el pagerank hacia la nueva ;-)… realmente muy interesante.
Estas técnicas tienen valor también para el caso de la migración de sitios, luego tocaré ese tema en esta Web.
No hay comentarios:
Publicar un comentario