Redireccionar un directorio con HTTP 301 y expresiones regulares

Hace bastante tiempo escrbí un artículo sobre redirecciones con HTTP 301 para ficheros.

Si queremos mover todos los ficheros contenidos en un directorio, con ese sistema deberíamos hacerlo uno a uno. Para ayudarnos en esta tarea podemos usar RedirectMatch y expresiones regulares:

redirectmatch 301 /antiguo/(.*) http://www.otraurl.com/$1

Lo que encontremos dentro del (.*) se trasladará al $1 en la nueva dirección. Todos los ficheros y carpetas que cumplan con la condición /antiguo(.*), es decir, que contengan /antiguo se redireccionarán al dominio www.otraurl.com.

Para más información puedes investigar sobre expresiones regulares.

Cambiar guiones bajos por guiones en las URL con .htaccess

Siempre se ha dicho que es mejor usar guiones “normales” (‘-‘ ó dashes) en lugar de guiones bajos (‘_’ ó underscores) en las URL porque Google los indexaba mejor.

Sin embargo esto parece que está cambiando (o ha cambiado ya) tal y como comentaba Matt Cutts el año pasado. En ese post Matt nos contaba que, aunque recomienda usar guiones ‘-‘, él no perdería tiempo pasando de un sistema al otro.

Aún así es posible que quieras hacerlo. Aquí tienes una posible solución:

RewriteRule ^([^_]*)_(.*)\.html$ /$1-$2.html [R=301,L]
RewriteRule ^([^_]*)_([^_]*)_(.*)\.html$ /$1-$2-$3.html [R=301,L]

Esto cambia páginas del tipo:

seccion_coches.html
seccion_coches_motos.html

por:

seccion-coches.html
seccion-coches-motos.html

Y, dado que se usan redirecciones 301, no se pierde Page Rank ni se considera contenido duplicado.