Respuesta breve: si la portada funciona pero todas las páginas interiores devuelven 404, WordPress funciona pero el servidor no le pasa las URLs amigables. El contenido está intacto; la capa de reescritura se movió mal.
Por qué la portada es la excepción
La portada se sirve en la raíz, que no necesita reescritura. Todas las demás URLs —entradas, páginas, categorías, archivos— dependen de una regla que entrega la petición a WordPress. Cuando esas reglas faltan o se ignoran, solo sobrevive la raíz, que es exactamente el patrón que ves.
Corrígelo en el orden correcto
- Confirma que las direcciones del sitio y de WordPress en Ajustes › Generales coinciden con el nuevo dominio, protocolo incluido.
- Ve a Ajustes › Enlaces permanentes y pulsa Guardar sin cambiar nada: regenera las reglas y, en Apache, reescribe el
.htaccess. - En Apache, confirma que
AllowOverride Allestá activo para que el.htaccessse lea; en Nginx, confirma que existe la reglatry_files ... /index.php?$args, porque Nginx no usa.htaccess. - Vacía todas las capas de caché, incluido el CDN, antes de volver a probar.
Revisa también las URLs antiguas mezcladas
Una migración que rompió los enlaces suele dejar referencias absolutas al dominio antiguo en la base de datos. No provocan 404 por sí solas, pero producen imágenes rotas, avisos de contenido mixto y redirecciones raras. Corrígelas con una búsqueda y reemplazo que entienda datos serializados —wp search-replace 'urlvieja' 'urlnueva' --skip-columns=guid de WP-CLI— y no un reemplazo de texto plano, que corrompe los arrays serializados.
Verifica
Prueba una entrada, una página, un archivo de categoría, un listado paginado y la búsqueda. Después confirma que el administrador funciona y que ninguna URL redirige en silencio al dominio anterior.
CRITERIO DE INCIDENTE WP REPAIR
Secuencia de intervención segura
Cuando funciona la portada y las rutas interiores dan 404, el contenido suele estar intacto y falla la reescritura o la ruta base.
- Confirma home/site y subdirectorio de instalación tras migrar.
- Regenera una vez las reglas de WordPress.
- Verifica AllowOverride de Apache o try_files de Nginx usados por ese vhost.
- Prueba entradas, páginas, taxonomías, paginación, búsqueda y REST.
Qué debe quedar verificado
- Tipos de ruta representativos devuelven su contenido.
- Las URLs antiguas redirigen solo cuando existe sustituto válido.
- Ninguna ruta vuelve silenciosamente al dominio o subdirectorio anterior.
Fuentes técnicas oficiales
Continúa el diagnóstico
Esta guía explica el diagnóstico. Si la web está afectada ahora, la intervención debe preservar una vía de vuelta y verificar el recorrido real del negocio.
Ver el servicio de reparación urgente →SOBRE ESTE SÍNTOMA
Preguntas frecuentes de esta guía.
Si mi página de inicio se carga bien, ¿descarta eso un problema serio?+
La página de inicio no necesita reescritura URL porque se sirve en la raíz del sitio, mientras que cada otro URL depende de las reglas de reescritura que dan la petición a WordPress, por lo que funciona mientras que todo lo demás 404s apunta directamente a la reescritura rota.
¿Re-guardar la configuración de Permalink funcionará de la misma manera en cualquier host?+
El mecanismo difiere por servidor. En Apache, guardar permalinks regenera.htaccess, pero eso sólo tiene efecto si AllowOverride All está configurado para que.htaccess sea leído. En Nginx no hay.htaccess en absoluto, por lo que necesita la regla try_files... /index.php?$args presente en la configuración del servidor en su lugar.
Arreglé los 404, ¿por qué todavía veo imágenes rotas y advertencias de contenido mixto?+
Una migración que rompió los permalinks a menudo también dejó referencias absolutas al antiguo dominio dispersado en la base de datos. Estos no causan 404s por sí mismos, pero sí producen imágenes rotas, advertencias de contenido mixto y redireccionamientos extraños, y necesitan una búsqueda serializada con conocimiento de datos y reemplazarlas para corregirlas.
¿Puedo arreglar el antiguo dominio URLs con un texto plano, encontrar y reemplazar en la base de datos?+
No, eso corre el riesgo de corromper el sitio. WordPress almacena algunos datos como arrays serializados, donde un texto plano reemplaza las longitudes de cadena sin actualizar los metadatos de serialización. Utilice una herramienta construida para esto, como el wp search-replace de WP-CLI con --skip-columns=guid.