Redirección 301 con htacces
Hoy le dije adiós a PHP[1] y regreso a simple y puro HTML.
El cambio en sí no representa mayor dificultad. Gracias al sistema de publicación que utilizo ahora puedo reconstruir todo el sitio cada vez que publico una entrada, así que generar nuevamente todas las páginas deja de ser un problema.
Lo que sí debía evitar a toda costa era que Google interpretara el nuevo sitio como contenido duplicado. Las páginas ya estaban indexadas y sería un desperdicio perder el trabajo realizado únicamente por haber cambiado la estructura del sitio.
La solución consiste en redirigir automáticamente las direcciones antiguas hacia las nuevas mediante redirecciones permanentes (HTTP 301).
¿Por qué utilizar una redirección 301?
La mejor forma de redirigir el tráfico es mediante el archivo .htaccess.
Cuando un navegador solicita una página, Apache verifica primero si existe un archivo .htaccess aplicable a esa ruta. Si encuentra una regla de redirección, nunca llega a servir el archivo original; responde inmediatamente indicando cuál es la nueva ubicación del recurso.
De esa forma tanto los visitantes como los buscadores son enviados directamente a la nueva dirección.
Si quieres conocer con mayor detalle el funcionamiento de este archivo puedes consultar la documentación oficial de Apache.
Consideraciones importantes al trabajar con .htaccess
Antes de modificar este archivo conviene tomar algunas precauciones.
- Edita y transfiere siempre el archivo en modo ASCII. En algunos clientes FTP subirlo en modo binario puede provocar que Apache no lo interprete correctamente.
- El archivo
.htaccesses una característica propia de Apache y no funcionará en servidores Windows que no utilicen este servidor web. - Verifica cuidadosamente cada cambio antes de publicarlo. Una regla incorrecta puede provocar desde enlaces rotos hasta ciclos infinitos de redirección.
- Después de realizar las modificaciones borra el caché del navegador y comprueba que el servidor esté respondiendo con el código HTTP 301 (Moved Permanently) y no con 302 (Moved Temporarily), salvo que la redirección realmente sea temporal.
- Algunos sistemas operativos no permiten crear archivos cuyo nombre comience con un punto. En ese caso puedes crear un archivo llamado
htaccess.txty renombrarlo una vez que lo hayas subido al servidor. - Asegúrate de que tu cliente FTP muestre archivos ocultos. Personalmente utilizo FileZilla, que además es software libre.
- En todos los ejemplos recuerda sustituir
ejemplo.compor el nombre de tu propio dominio.
Ejemplos de redirecciones con .htaccess
Redirigir una sola página
Si únicamente cambia la ubicación de una página específica, basta con utilizar la directiva Redirect.
Redirect 301 /paginavieja.html http://www.ejemplo.com/nuevapagina.html
A partir de ese momento cualquier visitante que solicite paginavieja.html será enviado automáticamente a nuevapagina.html.
Este es probablemente el tipo de redirección más utilizado cuando reorganizamos el contenido de un sitio.
Redirigir un sitio completo
Si todo el sitio cambia de dominio o de ubicación, podemos redirigir todas las solicitudes hacia el nuevo servidor.
Redirect 301 / http://www.ejemplo.com/
Esta regla envía cualquier petición realizada al sitio anterior hacia la página principal del nuevo sitio.
Es una solución rápida cuando únicamente queremos conservar el tráfico hacia el nuevo dominio.
Sin embargo, si el objetivo es mantener cada página en su ubicación equivalente, conviene crear reglas más específicas para cada una de ellas.
Cambiar la extensión de las páginas
Este último ejemplo es precisamente el que utilicé durante la migración de este sitio.
Todas las páginas antiguas terminaban en .php y las nuevas terminan en .html.
La siguiente regla localiza cualquier dirección que termine en .php y la redirige automáticamente a su equivalente con extensión .html.
RedirectMatch 301 (.*).php$ $1.html
Por ejemplo:
http://yo.toledano.org/index.php
se convierte automáticamente en
http://yo.toledano.org/index.html
Hay que utilizar esta regla con cuidado.
Al tratarse de una expresión regular, cualquier archivo cuya extensión sea .php será redirigido. Antes de publicarla conviene revisar varias veces el comportamiento del sitio completo para asegurarse de que no existan páginas que deban seguir funcionando como PHP.
Comentarios finales
Una buena estrategia de redirecciones permite cambiar por completo la estructura de un sitio sin obligar a los visitantes a actualizar sus marcadores y sin perder el trabajo de indexación realizado por los buscadores.
Dedicar unos minutos a configurar correctamente el archivo .htaccess suele ahorrar muchos problemas después de una migración.
Este artículo lo escribí en el 2007, aproximadamente, cuando utilizaba Movable Type. ↩︎