Una migración copia una aplicación a un entorno distinto. Los archivos y la base pueden estar intactos mientras PHP, rutas, permisos, DNS o reglas del servidor impiden funcionar. «Iba bien en el hosting anterior» es una evidencia útil, no una garantía de transferencia completa.
Mantén disponible la web antigua
No canceles el hosting anterior ni sobrescribas su última copia funcional. Prueba el nuevo mediante un archivo hosts o curl --resolve y mantén el dominio público en el antiguo durante el diagnóstico.
Anota versiones de PHP, servidor web, document root, MySQL y extensiones en ambos. Exporta la base antes de permitir contenido nuevo en las dos copias.
Confirma que llegas al servidor previsto
El navegador puede usar DNS cacheado, un AAAA antiguo o Cloudflare. Prueba el hostname contra la IP nueva conservando Host y SNI:
curl -I --resolve example.com:443:203.0.113.20 https://example.com/
Compara certificado, cabeceras y cuerpo con el hosting anterior. Acceder solo por IP es poco fiable porque virtual hosts y redirecciones dependen del nombre.
Verifica el conjunto migrado
Confirma que el document root contiene núcleo, wp-content, archivos ocultos como .htaccess y el wp-config.php previsto. Compara recuentos y logs de transferencia; una barra verde no demuestra que llegara todo.
Comprueba que la importación incluye el prefijo correcto y entradas o pedidos recientes. Una base válida pero antigua puede parecer una migración rota.
Compara checksums del núcleo con una distribución oficial de la misma versión y revisa una muestra de originales en uploads frente a sus registros de adjunto. Un traslado interrumpido puede conservar la estructura de carpetas pero omitir archivos grandes o ocultos. No reemplaces el núcleo hasta separar archivos oficiales de personalizaciones y wp-content.
Revisa conexión y URLs
Verifica DB_NAME, DB_USER, DB_PASSWORD y DB_HOST para la cuenta nueva. Prueba el usuario con una consulta de lectura. No concedas privilegios globales para ocultar el error.
Inspecciona home y siteurl. Corrige deliberadamente URLs de staging o temporales. Los valores serializados requieren una sustitución consciente de WordPress; SQL sin procesar puede romper longitudes.
Compara PHP, extensiones y límites
Iguala primero la versión anterior cuando sea viable y actualiza después en una prueba controlada. Confirma mysqli, curl, mbstring, XML, ZIP, GD o Imagick y compara memoria, subidas, tiempo y funciones deshabilitadas.
Activa logging privado, no errores públicos:
define( 'WP_DEBUG', true );
define( 'WP_DEBUG_LOG', true );
define( 'WP_DEBUG_DISPLAY', false );
Reproduce una vez, guarda las líneas útiles y desactiva el detalle al terminar.
Repara propietario, permisos y rutas
Archivos subidos por otro usuario del sistema pueden ser legibles pero no escribibles. Corrige propiedad mediante panel o proveedor y evita 777.
Limpia solo cachés y CSS reproducibles después de copiar. Busca rutas absolutas en plugins de caché, seguridad y backup, cron, must-use plugins y configuración del servidor.
Revisa las reglas del servidor
Las directivas .htaccess pueden no estar permitidas en el nuevo plan, y Nginx no las interpreta. Busca handlers PHP antiguos, dominios forzados, rutas fijas, restricciones y cabeceras de proxy.
Conserva reglas personalizadas antes de regenerar enlaces permanentes. Un 500 global y un 404 solo en páginas interiores son fallos distintos.
Valida antes del cambio DNS
Prueba portada, login, editor, medios, REST, cron, formularios, correo y cualquier transacción relevante. Revisa la cadena completa HTTP/HTTPS y raíz/www.
Después del DNS, monitoriza IPv4, IPv6, certificado y logs. Mantén el entorno antiguo en solo lectura durante una ventana de rollback acordada.
Convierte la lección en mantenimiento
Los fallos repetidos revelan que falta una ficha del entorno o que las copias no se prueban. Conserva especificación del hosting, backups externos, ensayos de restauración, vencimientos y checklist de corte.
El objetivo no es únicamente cargar la portada nueva: hay que demostrar que la aplicación completa sobrevivió al traslado.