Informática

Redirigir carpetas en Drupal

 Si hemos cambiado el contenido de una carpeta a otra dentro de nuestra web necesitaremos redirigir a los usuarios que aún mantengan el enlace antiguo al nuevo, usuarios y por supuesto a los buscadores, a estos últimos además es muy recomendable indicarles que se ha movido el contenido permanentemente, que es como “ellos” les gusta que se le indique, sino cuando un buscador se dirija a comprobar es contenido que hemos movido vería un error 404 de “contenido no encontrado” por lo que influiría negativamente en el posicionamiento de nuestra web en los resultados de los buscadores.

 

 Normalmente editaríamos el archivo .htaccess que se encuentra en la raíz de la carpeta donde albergamos la web y añadiríamos este código:

 

Redirect 301 /carpeta-antigua http://www.nuestrodominio.es/carpeta-nueva

 

 Pero en Drupal 6 esto no funciona bien ya que en el .htaccess que trae consigo existe una regla Rewrite que redirige los enlaces a nuestrodominio.es/carpeta-nueva/index.php?q=Nuestro-Enlace

 

 Esta regla Rewrite nos crea enlaces incorrectos si usamos código indicado arriba para redireccionar y no la podemos quitar ya que es imprescindible para Drupal.

 

 Probé diferente reglas Rewrite para redirigir una carpeta sin existo, busque formas especificas para realizarlo bajo Drupal y encontré varios módulos diseñados para configurar redirecciones, el mejor de todos es el Path Redirect que nos permite configurar redirecciones de páginas antiguas que ya no existen a su nueva ubicación, pudiendo indicar el tipo de redirección que necesitemos usar (recordar usar el tipo 301 para la paginas movidas definitivamente o eliminadas), pero solo sirve redirigir paginas de una en una, no vale para directorios.

 

 Bueno, no realmente, porque existe un parche para este modulo que permite añadir “comodines” a las redirecciones que creamos. Para que se entienda, podemos redirigir todo el contenido que estaba en usuarios/<*> a la nueva ubicación listausuarios/<*> o paginas/<*>.html a artículos/<*>

 

 El comodín <*> indica cualquier contenido que exista, esto nos puede servir para redirigir directorios.

 

 Yo no lo he probado ya que ese parche solo sirve para la versión 6.x-1.0-beta1 del Path Redirect y ahora van por la beta 3, prefiero esperar a que publiquen una versión final que andar parcheando sobre versiones betas que contienen fallos, si tu web está en funcionamiento no te lo recomiendo, ahora bien si es una web de pruebas adelante.

 

 Bien, lo que os quería contar es que tenemos una solución, después de todas las pruebas anteriores, he comprobado que funciona correctamente el siguiente método, cogemos el primer ejemplo, si queremos redirigir de /carpeta-antigua a /carpeta-nueva lo que tenemos que hacer es crear la carpeta “carpeta-antigua” en nuestro hosting, dentro de esta carpeta crearemos un archivo .htaccess en el que pondremos el siguiente código:

 

RewriteEngine On RewriteRule ^(.*)$ http://www.nuestrodominio.es/carpeta-nueva/$1 [R=301,L]

 

 Así redirigimos automáticamente todos los enlaces a la nueva dirección e indicamos que es permanente (tipo 301).

 

 Los usuarios que se dirijan a los enlaces antiguos te lo agradecerán ya que no les dará error 404 teniendo que buscar la nueva página donde has movido el contenido (normalmente no lo buscan, se van a otra web que les haya indicado el buscador), además en la barra de direcciones del navegador aparece la nueva ubicación del contenido automáticamente.

 

 Los buscadores también te agradecerán que les indiques la ubicación del nuevo enlace así no te penalizan por no encontrar el contenido.

 

Espero que os sea de ayuda, saludos.