main content

Cómo migrar de Drupal 7 a Drupal 10 sin perder contenido ni posicionamiento SEO

Voy a ser directo: llevo doce años peleándome con Drupal y he migrado más sitios de D7 de los que me gustaría reconocer. Algunos salieron como la seda. Otros me costaron semanas de sueño. Lo que vas a leer aquí es el destilado de todo eso.

Drupal 7 llegó a su fin de vida oficial en enero de 2025. Si todavía lo usas en producción, tranquilo, no eres el único: según datos de drupal.org, a principios de 2025 aún había más de 400.000 sitios activos en Drupal 7. Pero que haya mucha compañía no significa que estés seguro. Sin parches de seguridad ni soporte oficial, tu sitio funciona con tiempo prestado.

La pregunta que me hacen todas las semanas: "¿Si migro a Drupal 10, pierdo el posicionamiento?" La respuesta corta es no, si lo haces bien. La respuesta larga es este artículo.

Por qué no puedes simplemente "actualizar" de Drupal 7 a Drupal 10

Lo primero: esto no es una actualización. Es una migración. Y la diferencia no es semántica, es brutal.

Drupal 8 reescribió el núcleo desde cero, abandonando el paradigma procedimental en favor de una arquitectura orientada a objetos basada en Symfony. Los hooks se convirtieron en servicios, los arrays de renderizado cambiaron, PHPTemplate desapareció y entró Twig, y la gestión de configuración se rediseñó por completo con CMI (Configuration Management Initiative).

¿Qué significa? Que no hay un botón de "actualizar versión". Tu tema custom no va a funcionar, muchos módulos contribuidos tienen equivalentes pero no todos, y la estructura de base de datos es completamente diferente.

Sin embargo, Drupal incluye un framework de migración robusto -- el módulo Migrate -- que permite trasladar contenido, usuarios, taxonomías y configuraciones de forma programática y controlada. Es potente, pero requiere planificación seria.

El coste real de no migrar

Antes de entrar en el cómo, hablemos de lo que pasa si te quedas quieto:

  • Vulnerabilidades de seguridad: sin parches oficiales, cada vulnerabilidad descubierta se convierte en un exploit permanente. El programa Drupal Steward ofrece protección limitada de pago, pero no cubre módulos contribuidos.
  • Pérdida de compatibilidad: PHP 8.2+ ya presenta incompatibilidades con muchos módulos de Drupal 7. Los proveedores de hosting están retirando versiones antiguas de PHP.
  • Estancamiento funcional: sin acceso a Layout Builder, Media Library, JSON:API nativo ni Decoupled Menus, tu equipo trabaja con herramientas de hace una década.
  • Impacto SEO progresivo: Core Web Vitals penalizan sitios lentos. La stack de renderizado de Drupal 7 no compite en LCP, FID o CLS frente a Drupal 10.

Cada mes que retrasas la migración es deuda técnica acumulada y riesgo creciente. No es alarmismo; es aritmética.

Paso 1: auditoría completa del sitio actual

No empieces a migrar sin saber exactamente qué tienes. He cometido ese error y se paga caro.

Inventario de contenido

  • Tipos de contenido (content types) y sus campos asociados.
  • Taxonomías y vocabularios.
  • Bloques personalizados, menús, vistas (Views).
  • Archivos multimedia: imágenes, documentos, vídeos embebidos.
  • Usuarios, roles y permisos.
  • Datos en tablas custom si usas módulos propios.

El módulo Migrate Upgrade genera automáticamente las definiciones de migración a partir de la base de datos de Drupal 7. Combinado con drush migrate:status, obtienes un mapa completo de las entidades a migrar.

Inventario de módulos

Haz una lista de todos los módulos activos y clasifícalos:

  • Tiene equivalente directo en Drupal 10: Pathauto, Metatag, Redirect, Token, Views (ahora en core), Webform.
  • Tiene equivalente funcional pero diferente: Display Suite puede sustituirse por Layout Builder; Panels por Block Layout.
  • No tiene equivalente: requiere desarrollo custom o un cambio de enfoque.
  • Ya no es necesario: muchos módulos de Drupal 7 resolvían carencias que Drupal 10 cubre de forma nativa.

Auditoría SEO

Esta es la dimensión que la mayoría de equipos técnicos subestiman. He visto migraciones técnicamente impecables donde el tráfico se desplomó porque nadie documentó las URLs. Antes de migrar necesitas:

  • Todas las URLs indexadas: exporta desde Google Search Console. Este es tu mapa de redireccionamiento.
  • Meta tags por página o patrón: títulos, descripciones, canonical tags, hreflang si aplica.
  • Datos estructurados: Schema.org markup, breadcrumbs, FAQ schema.
  • Mapa de redireccionamientos existentes: si ya tienes 301s en Drupal 7, deben migrar también.
  • Rendimiento base: registra tus Core Web Vitals actuales como referencia.

Paso 2: diseño de la arquitectura en Drupal 10

No repliques tu Drupal 7 tal cual en Drupal 10. Error clásico, oportunidad desperdiciada. La migración es el momento para:

  • Simplificar tipos de contenido: consolida tipos redundantes, elimina campos que nadie usa, estandariza nomenclatura.
  • Adoptar Media Library: centraliza toda la gestión multimedia con el módulo Media de core.
  • Implementar Layout Builder: sustituye paneles y bloques complejos por una interfaz visual que los editores pueden manejar sin intervención técnica.
  • Revisar la estrategia de URLs: Pathauto funciona igual conceptualmente, pero es tu oportunidad para limpiar patrones inconsistentes. Eso sí: si cambias URLs, necesitas redireccionamientos 301.

Paso 3: la migración técnica paso a paso

Preparación del entorno

  1. Instala un Drupal 10 limpio en un entorno de desarrollo. Nunca en producción.
  2. Configura los módulos esenciales: Migrate, Migrate Upgrade, Migrate Plus, Migrate Tools.
  3. Conecta la base de datos de Drupal 7 como fuente secundaria en settings.php:
$databases['migrate']['default'] = [
  'driver' => 'mysql',
  'database' => 'drupal7_db',
  'username' => 'user',
  'password' => 'pass',
  'host' => 'localhost',
];

Generación y ejecución de migraciones

Ejecuta drush migrate:upgrade --legacy-db-key=migrate --configure-only para generar las definiciones sin ejecutarlas. Esto te da ficheros YAML en la configuración activa que puedes revisar, ajustar y versionar. Revisa esos YAMLs con calma: ahí detectas los problemas antes de que exploten.

Las migraciones se ejecutan en orden de dependencias:

  1. Usuarios y roles (primero, porque el contenido referencia autores).
  2. Taxonomías y vocabularios.
  3. Archivos y media.
  4. Tipos de contenido y nodos (con sus campos, referencias y revisiones).
  5. Bloques, menús y vistas.
  6. Redireccionamientos (módulo Redirect).
  7. Meta tags y configuración SEO.

Usa drush migrate:import --group=migrate_drupal_7 --update para ejecutar y drush migrate:rollback si necesitas corregir y repetir. La capacidad de rollback es una de las grandes ventajas del framework Migrate: puedes iterar sin riesgo.

Campos y transformaciones

El sistema Migrate usa plugins de proceso para transformar datos entre origen y destino. Los que más vas a usar:

  • migration_lookup: resuelve referencias entre entidades migradas.
  • file_copy: copia archivos físicos a la nueva estructura.
  • static_map: convierte valores de campos de texto a nuevos identificadores.

Si tienes campos custom con lógica compleja, puedes escribir process plugins propios. La API es limpia y la documentación ha mejorado mucho.

Paso 4: preservar el posicionamiento SEO

Aquí está la chicha. Si pierdes posicionamiento tras la migración, has fracasado aunque el sitio funcione perfectamente.

Redireccionamientos 301: la pieza crítica

Cada URL de Drupal 7 que cambie necesita un 301 permanente. Sin excepciones. Google tarda entre 3 y 6 meses en consolidar completamente un 301, pero transfiere la autoridad en cuestión de días si está correctamente configurado.

Herramientas para gestionarlos:

  • Módulo Redirect en Drupal 10: gestión desde la interfaz de administración.
  • Fichero .htaccess o configuración de Nginx: para redireccionamientos masivos o patrones regex.
  • Módulo Redirect 404: detecta URLs con errores 404 y sugiere redireccionamientos. Instálalo siempre.

Cruza tu listado de URLs indexadas con las nuevas URLs y genera un CSV de redireccionamientos antes del lanzamiento. Antes, no después.

Meta tags y datos estructurados

Instala y configura Metatag para Drupal 10 antes de la migración de contenido. Define patrones globales por tipo de contenido y verifica que los valores migrados coinciden con los originales. Si usabas Schema.org Metatag, asegúrate de que el markup JSON-LD se genera correctamente.

Sitemap XML

Configura Simple Sitemap o XML Sitemap y envíalo a Search Console inmediatamente después del lanzamiento. Esto acelera el rastreo de las nuevas URLs.

Canonical tags

Verifica que cada página tiene su canonical correcto. Errores típicos: canonicals apuntando a la URL antigua, duplicados, o páginas sin canonical.

Velocidad y Core Web Vitals

Drupal 10 con BigPipe y lazy loading nativo ya mejora significativamente frente a D7. Aun así, aprovecha para:

  • Optimizar imágenes con Image Optimize y formatos WebP.
  • Implementar un CDN si no lo tenías.
  • Revisar la carga de CSS y JavaScript con el sistema de libraries.
  • Medir con Lighthouse y PageSpeed Insights antes y después.

Paso 5: lanzamiento y monitorización post-migración

El día del lanzamiento no es el final; es el principio de la validación:

  • Rastreo completo con Screaming Frog o Sitebulb: busca 404, cadenas de redireccionamientos, meta tags faltantes, contenido duplicado.
  • Verificación en Google Search Console: envía el nuevo sitemap, revisa errores de cobertura.
  • Monitorización de tráfico orgánico: compara semana a semana durante al menos 8 semanas. Es normal ver fluctuaciones los primeros 15 días.
  • Monitorización de posiciones clave: usa Semrush, Ahrefs o Sistrix para detectar caídas tempranas.
  • Pruebas funcionales: formularios, flujos de compra, integraciones con CRM.

Según estudios de agencias especializadas, el 78% de los sitios que siguen un protocolo con redireccionamientos completos recuperan o superan su tráfico orgánico en menos de 4 semanas.

Errores que hunden migraciones (y cómo evitarlos)

Mi lista negra tras doce años:

  • No mapear todas las URLs antes del lanzamiento: si descubres URLs huérfanas después, ya habrás perdido crawl budget y posiciones.
  • Migrar en viernes: si algo falla, necesitas al equipo disponible. Lanza entre martes y miércoles.
  • Ignorar las URLs con parámetros: Drupal 7 con Views generaba query strings indexadas. Necesitan redireccionamiento o canonicalización.
  • No migrar los redireccionamientos existentes: si tu D7 ya tenía 301s, deben trasladarse o rompes cadenas históricas.
  • Cambiar el dominio y la plataforma a la vez: son dos variables de riesgo que multiplicadas complican enormemente el diagnóstico.

Plazos reales de una migración

Números sin maquillar:

  • Sitio corporativo estándar (10-20 tipos de contenido, hasta 5.000 nodos): 6-10 semanas de desarrollo más 2-4 de QA y validación SEO.
  • Portal editorial o intranet compleja (50+ tipos de contenido, multilingüe, 50.000+ nodos): entre 4 y 8 meses.
  • Ecommerce con Drupal Commerce: añade 4-6 semanas por la migración de productos, pedidos y pasarelas de pago.

Conclusión: migrar es inevitable, perder SEO no lo es

Drupal 7 ya no es una opción viable a medio plazo. Pero la migración a Drupal 10 no tiene por qué ser traumática. Con una auditoría rigurosa, un plan de redireccionamientos completo, una ejecución técnica cuidada y una monitorización post-lanzamiento disciplinada, tu sitio puede salir más rápido, más seguro y mejor posicionado que antes.

La clave es tratar la migración como un proyecto de negocio, no solo técnico. Porque lo que está en juego no es solo el código: es la visibilidad de tu empresa en Google, la experiencia de tus usuarios y la capacidad de tu equipo para crecer sobre una plataforma moderna.

Si tu sitio tiene complejidad media-alta, contenido multilingüe o un posicionamiento orgánico que no puedes permitirte perder, trabajar con un equipo especializado reduce drásticamente el riesgo. En Tangram Consulting llevamos años ejecutando migraciones de Drupal 7 a Drupal 10 para empresas que necesitan mantener su posicionamiento intacto. Contacta con nuestro equipo y te ayudamos a definir el plan adecuado para tu sitio.

No esperes a que un fallo de seguridad o una incompatibilidad de hosting te obligue a migrar con prisas. Planifica, ejecuta y protege lo que has construido.