WordPress enlaces permanentes no funcionan: causas y cómo solucionarlo

Un día tu web funciona perfecta, pulsas en cualquier entrada del blog o ficha de servicio y… error 404. La home sigue cargando, el panel de WordPress también, pero el resto de URLs devuelven «página no encontrada». Si te ha pasado, casi seguro estás ante el problema más típico de WordPress: los enlaces permanentes han dejado de funcionar. La buena noticia es que las causas son siempre las mismas cinco y la solución más habitual tarda menos de un minuto en aplicarse.

En esta guía te explicamos por qué pasa, cómo identificar tu caso concreto y cómo arreglarlo paso a paso, desde la solución más simple hasta los casos más enrevesados de servidor.

Si tu web está caída y necesitas recuperarla ya, lo arreglamos en menos de dos horas con backup previo incluido.

Habla con nosotros

¿Qué son los enlaces permanentes y por qué se rompen?

Los enlaces permanentes (o permalinks) son la estructura de URL que WordPress usa para mostrar tus entradas y páginas: /mi-articulo/, /categoria/algo/, etc. Detrás de esa URL bonita hay una regla de reescritura que el servidor (Apache o Nginx) tiene que entender para saber a qué archivo PHP responder.

Cuando algo se rompe en esa cadena —el archivo de configuración del servidor, los permisos, un plugin que interfiere o un cambio de hosting— las URLs amigables dejan de funcionar y todo va a parar a un 404. La home se salva porque no necesita reescritura, pero el resto del sitio sí.

Síntomas habituales: cómo identificar tu caso

Antes de aplicar soluciones, identifica con cuál de estos escenarios coincide tu problema:

  • Solo la home funciona, todas las demás URLs devuelven 404. Caso 1, suele resolverse en 30 segundos.
  • Tras una migración de hosting dejaron de funcionar. Caso 2: el .htaccess no se ha copiado o el nuevo servidor no soporta mod_rewrite.
  • Falla solo en algunas entradas, no en todas. Caso 3: un plugin de SEO o redirecciones está interfiriendo.
  • Funciona en navegación normal pero falla al recargar. Caso 4: caché del servidor mal configurada o CDN.
  • El panel también te bloquea y no puedes guardar enlaces permanentes. Caso 5: permisos del .htaccess.

Solución 1: regenerar enlaces permanentes desde el panel

Es el truco que resuelve el 70 % de los casos y casi nadie prueba primero. Entra al panel de WordPress y haz lo siguiente:

  1. Ve a Ajustes → Enlaces permanentes.
  2. No cambies nada: pulsa directamente «Guardar cambios» al final de la página.
  3. Recarga cualquier URL del blog para comprobar que vuelve a cargar bien.

Lo que ha hecho WordPress es regenerar el archivo .htaccess de la raíz con las reglas correctas. Si en tu caso esto lo arregla, tienes el problema resuelto. Si no funciona, el siguiente paso es revisar manualmente el archivo.

Solución 2: revisar o regenerar el .htaccess manualmente

Si el panel no consigue escribir el .htaccess (por permisos o por restricciones del hosting), tendrás que hacerlo tú por FTP. Conecta a tu servidor y busca el archivo .htaccess en la raíz de tu WordPress. Si no aparece, comprueba que tu cliente FTP muestre los archivos ocultos.

Descárgalo como copia de seguridad y reemplaza su contenido por el bloque oficial de WordPress:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

Sube el archivo, asegúrate de que sus permisos son 644 y recarga la web. Si las URLs vuelven, perfecto. Si sale un error 500, el problema está en que el módulo mod_rewrite de Apache no está activo o tu hosting usa Nginx (que necesita configuración distinta, ver Solución 3).

Solución 3: si tu hosting es Nginx, no usa .htaccess

Apache es el servidor más usado en hostings compartidos, pero Nginx es habitual en hostings cloud, VPS y servicios modernos (Raiola, SiteGround Premium, hosting gestionado de DigitalOcean, etc.). Nginx no lee archivos .htaccess: la configuración de reescritura va en el archivo de configuración del servidor, normalmente en /etc/nginx/sites-available/tu-dominio.conf.

La regla equivalente para WordPress en Nginx es:

location / {
    try_files $uri $uri/ /index.php?$args;
}

Si tienes acceso de administrador al servidor, edita el archivo, añade ese bloque dentro de la sección server { ... } de tu dominio y recarga Nginx con sudo systemctl reload nginx. Si estás en hosting compartido con Nginx, contacta con su soporte y pídeles que activen la reescritura para WordPress: lo hacen en 5 minutos.

Solución 4: plugins que interfieren con enlaces permanentes

Algunos plugins de SEO, multiidioma o redirecciones se cargan tan pronto que pueden romper la reescritura de URLs. Los sospechosos habituales son: Yoast Premium en su módulo de redirecciones, Polylang o WPML cuando se cambia la URL base de idiomas, Redirection cuando tiene reglas en conflicto, y los page builders tipo Elementor cuando su sistema de plantillas dinámicas pisa el slug.

Para diagnosticar si es un plugin, desactívalos todos de golpe renombrando la carpeta /wp-content/plugins/ a plugins_off por FTP. Recarga el sitio: si las URLs vuelven a funcionar, el problema está en un plugin. Vuelve a renombrar la carpeta a plugins y reactiva los plugins uno a uno desde el panel hasta encontrar al culpable. Si te bloqueas en el camino, hemos cubierto este flujo en detalle en no puedo acceder a wp-admin.

Solución 5: caché de servidor o CDN que sigue sirviendo URLs antiguas

Si has cambiado de estructura de URLs (por ejemplo, de ?p=123 a /mi-articulo/) y algunas URLs antiguas siguen fallando, casi seguro hay caché por medio. Los sospechosos:

  • Plugins de caché (WP Rocket, W3 Total Cache, LiteSpeed Cache). Ve al plugin y purga toda la caché manualmente.
  • CDN (Cloudflare, BunnyCDN). Entra al panel y limpia toda la caché del sitio.
  • Caché del navegador. Prueba en una ventana de incógnito antes de descartar otras causas.
  • Caché de objetos (Redis, Memcached) si tu hosting la usa. Reinícialo desde el panel del hosting.

Solución 6: permisos del .htaccess incorrectos

Si al guardar enlaces permanentes desde el panel WordPress te avisa que no puede escribir el .htaccess, es problema de permisos. Por FTP, clic derecho en el archivo → Permisos del archivo → cambia a 644. Si está bloqueado y no te deja cambiarlo, contacta con el hosting para que ajuste el propietario.

Preguntas frecuentes

¿Tengo que reinstalar WordPress si los enlaces permanentes no funcionan?

Casi nunca. El 99 % de los casos se resuelven con una de las seis soluciones de esta guía. Reinstalar solo tiene sentido si tu WordPress está infectado por malware extendido y no hay backup limpio.

¿Puedo cambiar la estructura de enlaces permanentes sin perder posicionamiento SEO?

Sí, pero solo si configuras redirecciones 301 desde las URLs antiguas a las nuevas. Sin esas redirecciones perderás todo el SEO acumulado en las URLs antiguas. Usa el plugin Redirection o configura las reglas en el .htaccess.

Mi hosting es Nginx y el soporte no quiere modificar la configuración. ¿Qué hago?

Cámbiate de hosting. Cualquier proveedor serio aplica la configuración estándar de WordPress en Nginx sin discusión. Si te ponen pegas, no es un hosting profesional.

¿Por qué a veces funciona y a veces no?

Suele ser caché intermedia: caché de navegador, plugin de caché o CDN que sirve respuestas antiguas. Purga toda la caché y prueba en incógnito para descartarlo.

¿Modificar el .htaccess puede romper otras cosas de la web?

Si introduces reglas mal escritas, sí: puede dar error 500 y la web entera dejar de funcionar. Por eso siempre se descarga el .htaccess original antes de modificarlo, para poder restaurarlo si algo falla.

Empieza siempre por Ajustes → Enlaces permanentes antes de tocar el servidor

El error que más tiempo hace perder a la gente con este problema es atacar primero el .htaccess a mano sin haber probado el botón «Guardar cambios» del panel. Ese botón regenera el archivo automáticamente y resuelve la inmensa mayoría de casos en treinta segundos sin necesidad de FTP, sin riesgo de romper nada y sin tocar configuración del servidor. Empieza siempre por ahí. Si después de hacerlo el problema sigue, baja al .htaccess manual, comprueba los plugins en conflicto y solo en último lugar mira la caché y la configuración del servidor. Atacar el problema en ese orden te ahorra tiempo y, sobre todo, te ahorra romper cosas que ahora sí están funcionando.