CUTOVER Joomla→WordPress (mañana): checklist maestro, backups, rollback y verificación #153
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Cutover Joomla → WordPress — checklist maestro (fecha objetivo: mañana)
Issue de referencia rápida para el día del cutover. Consolida la wiki Cutover-DNS (23-06-2026, sigue siendo la base válida) + el estado real que he verificado ahora mismo en el servidor, y añade lo que falta: backups, rollback explícito y puntos que la wiki no cubre.
⚠️ Aviso de numeración: la wiki enlaza a issues viejos (#93, #122, #125...) que ya NO EXISTEN en este Gitea (se reinició la numeración al migrar a
gitea.feadulta.comel 2026-06-28). Mapeo a los actuales:0. Mecanismo real del cutover (confirmar antes de nada)
Verificado por SSH: Joomla vive en
/web/y WordPress en/web/wp-nuevo/, en el MISMO servidor (134.0.10.170), bajo la misma cuenta cPanelfeadulta.wp-nuevo.feadulta.comes un subdominio que ya apunta a/web/wp-nuevo/.Esto significa que el cutover probablemente NO es un cambio de DNS a otro servidor, sino:
www.feadulta.com/feadulta.comen el panel cPanel de/web→/web/wp-nuevo(lo más limpio), omv web web-joomla-old && mv web-joomla-old/wp-nuevo web).Antes de ejecutar nada, confirmar explícitamente cuál de los dos métodos se va a usar — cambia el plan de rollback (ver §6). Si de verdad hay un cambio de DNS/IP de por medio (proveedor DNS distinto), hay que bajar el TTL con 24h de antelación y ya vamos tarde para mañana — comprobar esto primero.
1. Backups (verificado ahora mismo, 2026-07-07)
wp-content/updraft/backup_YYYY-MM-DD-*-db.gz, uno por día desde 15-06 hasta hoy (07-07), ~104MB. El de esta noche (07-07 05:09) ya está.updraft/— solo hay*-db.gz. Verificar si UpdraftPlus tiene programado backup de ficheros y a dónde va (¿remoto configurado o solo local?). Si el backup de ficheros no existe, hacerlo a mano antes del cutover (al menoswp-content/uploads/ywp-content/mu-plugins/)./backup/feadulta.com-*.zip) es de 2025-10-10 — tiene 9 MESES. No es el backup que protege el cutover en sí (Joomla no se toca/borra), pero si algo grave pasa y hace falta restaurar Joomla desde cero, ese backup está muy desactualizado. Recomendado: generar uno nuevo desde cPanel antes de mañana si el proceso de cutover incluye tocar Joomla de alguna forma.2. Pre-requisitos de contenido/plugin — bloqueantes vs no bloqueantes
Recomendado hacer SÍ o SÍ antes/durante el cutover:
noindex,nofollowde WordPress (si no, Google no indexará nada tras el cambio).limit-login-attempts-reloaded+ mu-pluginfea-cloudflare-realip.php) — crítico: sin el mu-plugin, LLAR bloquea a todo el mundo porque ve la IP compartida de Cloudflare como origen de todos los intentos.feadulta.comen Search Console antes del cambio.NO bloqueantes (post-cutover, no mezclar con la ventana de mañana):
Decisiones pendientes con Inma (issue #150, aún sin cerrar) — no bloquean el cutover pero conviene zanjarlas esta semana:
_carta_idexpuesto por REST o endpoint dedicado para Mixbot.3. Checklist técnico pre-cutover (de la wiki, revisar estado real)
siteurl/homefinal:https://www.feadulta.com.wp-nuevo.feadulta.comyfarmer.taild3aaf6.ts.net/feapor el dominio definitivo (posts, options, menús, mu-plugins hardcodeados).hreflang(Polylang), feeds y sitemap con las URLs finales.www.feadulta.comsirviendo WordPress (ya hay cert en/cert/feadulta.com.*, confirmar que cubrewww.).wp-nuevo.feadulta.comdebe seguir connoindexdespués del cutover (que quede como staging, no indexable).4. Ejecución (orden sugerido, de la wiki)
www.feadulta.coma WordPress (confirmar método, §0).home/siteurly limpiar URLs de staging.noindexde WordPress (#6).www.feadulta.com(#16).5. Post-cutover — verificación y monitorización
Inmediato:
Primeras 48h:
2-4 semanas:
No esperar que toda la migración aparezca indexada de golpe — fluctuaciones normales varias semanas mientras Google recrawlea.
6. Rollback — plan explícito
Trigger: fallo crítico detectado en los smoke tests o en las primeras horas (portada caída, carta no accesible, login roto, pérdida de datos).
Pasos:
www.feadulta.comvuelva a servir Joomla (/web/).Importante: el rollback NO debe borrar WordPress ni sus datos. Joomla se mantiene disponible/sin tocar hasta que WordPress supere la fase de estabilización (mínimo 7-14 días, alineado con la ventana de AdSense de #4).
Ojo con el mecanismo elegido en §0: si el cutover se hace moviendo directorios (
mv) en vez de cambiar el docroot desde el panel, el rollback es más arriesgado (hay que deshacer elmvexacto) — por eso conviene decidir y documentar el método exacto ANTES de ejecutar, no improvisarlo mañana.7. Resumen — qué falta decidir/hacer HOY antes de mañana
Referencias: wiki Cutover-DNS, #1, #2, #3, #4, #5, #6, #16, #17, #18, #22, #146, #149, #150, #151.
Decisión (Rafa, 2026-07-07): mecanismo del cutover = cambiar el document root del dominio principal
www.feadulta.com/feadulta.comen el panel cPanel, de/weba/web/wp-nuevo. Es el camino sencillo (§0), no se hacemvde directorios. No hay DNS/IP de por medio (mismo servidor, misma cuenta cPanel) → sin problema de TTL.Rollback (§6) queda simple: revertir el docroot a
/weben el panel.CUTOVER EJECUTADO Y CERRADO (2026-07-07/08)
Resumen para quien retome esto (incluido Mixbot): el cutover se ejecutó por mv físico de
directorios (no cambio de docroot vía panel — bloqueado porque ningún subdominio de esta cuenta
puede apuntar a
/weba secas, todos son subcarpetas/web/<nombre>), con ventana demantenimiento activa durante la ejecución.
Mecanismo final
/web/*→/web/antiguo/*(subdominio nuevoantiguo.feadulta.com, con banner +noindexpara evitar contenido duplicado)./web/wp-nuevo/*→/web/*.search-replacede dominio (wp-nuevo.feadulta.com y el host Tailscale de dev →www.feadulta.com),
blog_public=1, permalinks regenerados.www.feadulta.com (WordPress) — verificado correcto
Contenido, enlaces internos, GA4 (
G-6RT9ZRS4LW, portable sin tocar), Search Console (lefaltaba la meta tag de verificación, añadida como mu-plugin
fea-gsc-verification.php),redirección 301 de URLs viejas de Joomla → antiguo.feadulta.com (mu-plugin
fea-legacy-redirect.php).antiguo.feadulta.com (Joomla) — arreglado, ver #162
Tras el
mvdaba HTTP 500 en todo el frontend real. Causa:RewriteBasesin ajustar en.htaccesstras pasar a vivir en un subdirectorio → bucle demod_rewritede Apache(
AH00124). Fix:RewriteBase /en/web/antiguo/.htaccess. Verificado, todo 200 ahora.Diagnóstico completo y lecciones en #162.
Decisiones de enrutado (basadas en tráfico real de GA4, últimos 28 días)
/es/y/es(29.588 visitas — la URL más visitada del sitio, con diferencia): NO van aantiguo, redirigen a la home nueva.
comentcol1-4,eucacol1-4,estasemana/esta-semana(ítems de menú del antiguo rotativo decolumnas de la home, ~33.000 visitas combinadas): se quedan yendo a antiguo sin cambios — es
navegación interna de la web vieja, nadie llega ahí desde fuera.
buscadoravanzado/item/...):redirección genérica 301 a antiguo, funcionando correctamente tras el fix de #162.
Cloudflare
Riesgo asumido conscientemente: no había forma de purgar caché (sin token API, gestionado por
Inma) ni de verificar
cf-cache-status(Cloudflare bloquea curl con challenge de bot). Puedehaber servido HTML viejo de Joomla brevemente en
www.feadulta.comhasta que expiró el cachénatural.
Pendiente, no urgente
wp-nuevoen cPanel (ya no se usa)./web/antiguo/.htaccess.bak-pre-rewritebasecuando se confirme estable.¿Cerramos este issue y el #162, o los dejáis abiertos como referencia?