Pasar al contenido principal

Cómo corregir automáticamente las cadenas de redirecciones de Drupal con Redirect Audit

Los sitios Drupal acumulan cadenas de redirecciones con cada migración y cada cambio de contenido. Con el tiempo llegan a cientos o miles, ralentizan la navegación, perjudican el SEO y se vuelven inviables de corregir a mano. Redirect Audit es un módulo contrib de Metadrop que audita todas las redirecciones, reduce las cadenas a un único salto de forma automática y marca los bucles para revisión manual. Este artículo explica qué corrige el módulo, cómo lo hace y los resultados medidos en sitios reales.

Durante el ciclo de vida de un sitio Drupal, el contenido cambia y el sitio evoluciona, lo que requiere cierto mantenimiento. Uno de los problemas que pueden surgir son las cadenas de redirección.

Por qué los sitios Drupal acumulan cientos de cadenas de redirecciones

Un sitio Drupal con muchos años de vida, con una o varias migraciones a sus espaldas o con cambios de contenido frecuentes acumula redirecciones. Cada cambio de alias y cada página que se mueve deja una detrás, hasta llegar a cientos o incluso miles. Un proyecto nuevo acaba igual en cuanto empieza a crecer el contenido, a añadirse redirecciones y a moverse URLs.

El problema no es facilmente visible. Las cadena de redirecciones no se crean intencionadamente: surgen al irse añadiendo redirecciones una tras otra según pasa el tiempo debido las razones comentadas antes. Revisarlas a mano es inviable por las horas que llevaría, así que ahí se quedan, pasando desapercibidas hasta que afloran en auditorías hechas con distintas herramientas.

El coste de las cadenas y los bucles de redirección: rendimiento, SEO y páginas inaccesibles

Una cadena de redirecciones son varios saltos seguidos: a → b → c → d. Cada salto añade latencia a la navegación y complica el rastreo a los buscadores. 

Googlebot sigue hasta 10 saltos de una cadena antes de abandonar, pero la recomendación oficial de Google es redirigir directamente al destino final y, si no se puede, mantener la cadena por debajo de 3 a 5 saltos. Aunque el límite de 10 saltos es el límite técnico, el daño al rendimiento y al SEO empieza antes.

Un bucle es un caso peor. Aparece cuando una URL ya visitada vuelve a salir en el recorrido: a → b → a. El navegador sigue las redirecciones siguoen el ciclo y acaba mostrando el error ERR_TOO_MANY_REDIRECTS, así que la página nunca llega a verse.

Hay herramientas que detectan las cadenas, pero no las corrigen

Herramientas como Lighthouse ya detectan las cadenas de redirecciones y las señalan como causa de lentitud, así que la detección es un problema resuelto. Lo que no hace ninguna de ellas es corregir la cadena: pasar de varios saltos a uno solo, llevando cada redirección directamente del origen al destino final. Con cientos de cadenas, esa corrección es justo lo que importa.

Redirect Audit nace para cubrir ese hueco. Depende del módulo contrib Redirect, la base de la gestión de redirecciones en Drupal, y trabaja sobre él como módulo completamente independiente. Es compatible con Drupal 10, 11 y 12.

Redirect Audit reduce las cadenas a un único salto

El módulo detecta las redirecciones existentes, analiza el recorrido completo de cada cadena y clasifica cada resultado como cadena o como bucle.

Con las cadenas resuelve el flujo entero. Una cadena a → b → c → d genera las redirecciones a → d, b → d, c → d. Cada redirección apunta directamente al destino final, los saltos intermedios desaparecen y la cadena original se deshace. Solo quedan redirecciones directas, de un único salto.

Casos límite: URLs externas, cadenas largas y sitios multilingües

Ciertos sitios  pueden incluir tres situaciones que requieren un tratamiento propio: cadenas de redirección que acaban fuera de Drupal, cadenas más largas que el límite de análisis y contenido multilingüe.

Cadenas que acaban en URLs externas

Las cadenas que terminan fuera de Drupal también se gestionan. El módulo no lanza peticiones HTTP, así que no puede saber si un destino es correcto o devuelve un 404 (una página que ya no existe) u otro error. El módulo considera que una URL externa es un destino válido que simplemente vive fuera del sitio. El módulo la toma como final de la cadena y la corrección se aplica igual: a → b → c → URL externa se convierte en a → URL externa, b → URL externa, c → URL externa. La parte de la cadena que vive en Drupal queda optimizada aunque el destino final sea un recurso externo.

Cadenas que superan el límite de max_chain_depth

El ajuste max_chain_depth limita cuántos saltos sigue el análisis, con 10 por defecto. Ese valor se eligió por coherencia interna con el resto de procesos del módulo, ajustados para funcionar dentro de las restricciones de recursos de cualquier entorno.

Una cadena más larga que el límite no se descarta. Aparece truncada en el límite dentro de los resultados de la auditoría, y nada indica que esté truncada: el destino final que se muestra es la redirección que ocupa el límite, no el final real de la cadena. La corrección acorta la cadena hasta el límite en una pasada, y una nueva auditoría resuelve lo que queda, así que con auditorías y correcciones sucesivas queda del todo limpia. En la práctica, eso sí, las cadenas de más de 10 saltos son raras.

Sitios multilingües: falsos positivos resueltos

Druante el desarrollo, los sitios multilingües mostaron un caso especial: las redirecciones entre traducciones de un mismo nodo, por ejemplo de un alias en español a uno en inglés, se detectaban al principio como cadenas o incluso como bucles. El idioma se incorporó al análisis y como columna del panel, de modo que cada idioma se trata como una página independiente y esos falsos positivos desaparecieron.

Qué pasa con los bucles: se marcan para revisión, no se corrigen solos

Los bucles se reportan y se añade un aviso al informe de estado de Drupal para que no se pierdan de vista. Nunca se corrigen de forma automática: no hay manera automática de saber cuál debería ser el destino final correcto, ni qué redirección es la que de verdad interesa conservar. Esa decisión depende de cada caso.

El aviso es puramente informativo. Dejar los bucles sin corregir no provoca errores ni logs: el sitio se queda con los mismos bucles que ya tenía. El botón "Clear" del panel vacía la tabla y oculta el aviso, algo útil cuando en los resultados solo quedan bucles. No tiene ninguna otra función.

Cómo se usa: Drush, página de administración y cron

Tres comandos Drush cubren lo básico: drush ras escanea, drush raf corrige y drush rai muestra toda la información en detalle.

La página de administración cubre todo lo que queda fuera de la consola. Muestra una tabla con el tipo de redirección (bucle o cadena), el idioma de origen, el alias de origen, las redirecciones intermedias y la redirección final, más tres botones: Audit, Fix y Clear.

Redirect audit dashboard showing a table of URLs, status codes, and redirection details.

Como opción avanzada, cron permite mantener las redirecciones optimizadas de forma continua mediante el escaneo automático de los cambios en redirecciones y las correcciones automáticas. La corrección automática solo resuelve cadenas, nunca bucles, y viene desactivada por defecto: lo recomendable es lanzar antes una auditoría manual y revisar los resultados antes de dejar que algo cambie redirecciones solo.

Dos ajustes controlan los recursos implicados. Batch Size define cuántas redirecciones se analizan por lote (50 por defecto, entre 1 y 500) para mantener el consumo de memoria bajo control, y el tamaño de página del panel es de 20 elementos por defecto (entre 5 y 100).

Audit settings configuration page with options for batch size, maximum depth, and items per page.

Resultados en sitios reales

En un sitio con 1.429 redirecciones, la auditoría se completó en menos de 20 segundos. En otro con 4.679, la auditoría tardó menos de 30 segundos y detectó 139 cadenas de redirecciones y ningún bucle; la corrección se ejecutó después en menos de 10 segundos, más rápido que la propia auditoría. En los dos proyectos, escaneo más corrección se quedaron por debajo de 1 minuto.

El proceso completo la primera vez, desde llegar a la página del proyecto hasta instalarlo con Composer, activar el módulo, escanear y corregir desde la página de administación, suele completarse en menos de 2 minutos. Con recursos más limitados estos tiempos podrían subir hasta un máximo aproximado de 2 a 5 minutos para ambos procesos. Son estimaciones, no valores fijos, y todas las pruebas se hicieron con la configuración por defecto: lotes de 50 redirecciones y un máximo de 10 saltos por cadena.

Conclusión

Las cadenas de redirecciones son un problema muy conocido, con muchos detectores y casi ninguna corrección automática. Redirect Audit cubre ese hueco: corrige las cadenas automáticamente en segundos, deja cada redirección en un único salto y marca los bucles para que una persona decida qué hacer con cada uno. Encaja en tres formas de trabajar: una limpieza puntual, una auditoría completa de las redirecciones existentes o una optimización continua mediante cron.

Pruébalo en tu propio sitio: la página del proyecto, con enlaces al repositorio y al README, está en drupal.org/project/redirect_audit.

  • Antonio Núñez

    Junior Developer
Las respuestas se generan automáticamente mediante IA y pueden no ser precisas.