Guía práctica: Reparar enlaces permanentes (permalinks) en WordPress

Esta guía paso a paso explica cómo diagnosticar y reparar problemas comunes con los enlaces permanentes en WordPress: URLs 404, problemas con redirecciones, errores del servidor y URLs «bonitas» que no funcionan.

Índice

  1. Copias de seguridad y precauciones
  2. ¿Qué son los enlaces permanentes y por qué fallan?
  3. Soluciones rápidas desde el panel de WordPress
  4. Revisar y reparar el archivo .htaccess (Apache)
  5. Configuración típica para Nginx
  6. Permisos de archivos y propietarios
  7. Usar WP-CLI para diagnosticar y reparar
  8. Problemas con themes o plugins
  9. Casos avanzados: custom post types y rewrite rules
  10. Checklist final y recomendaciones

1. Copias de seguridad y precauciones

Antes de tocar archivos o base de datos:

  • Haz una copia de seguridad completa (archivos + base de datos).
  • Trabaja en staging si es posible.
  • Activa el modo de mantenimiento si tu sitio es crítico.

2. ¿Qué son los enlaces permanentes y por qué fallan?

Los permalinks son las reglas que convierten una URL legible en la consulta que WordPress entiende. Fallan por:

  • Error o ausencia del archivo .htaccess (Apache).
  • Configuración de Nginx sin reglas de reescritura.
  • Permisos de archivos inválidos.
  • Conflictos con plugins o themes que alteren rewrite_rules.
  • Cachés (Varnish, plugins de cache, CDN) que sirven rutas antiguas.

3. Soluciones rápidas desde el panel de WordPress

  1. Entra a Ajustes → Enlaces permanentes.
  2. Sin cambiar nada, haz clic en Guardar cambios. Esto fuerza a WordPress a reescribir las reglas.
  3. Prueba varias URLs internas (entradas, páginas, categorías).

Si esto lo arregla: el problema era normalmente la falta de actualización de las reglas o un .htaccess que no era editable por WordPress.

4. Revisar y reparar .htaccess (Servidor Apache)

WordPress usa reglas rewrite en .htaccess en la raíz del sitio. Contenido típico:

# 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

Paso a paso:

  1. Localiza el archivo en la carpeta raíz (public_html, www o similar).
  2. Renómbralo temporalmente (por ejemplo .htaccess.bak).
  3. En WP, haz Guardar cambios en Enlaces permanentes: WordPress intentará crear uno nuevo.
  4. Si WordPress no puede escribir .htaccess, copia manualmente el bloque anterior en el archivo nuevo y sube con SFTP.

Si usas un proveedor que no permite .htaccess (algunos hostings Windows/IIS), revisa su documentación específica para reglas de rewrite.

5. Configuración típica para Nginx

En Nginx no existe .htaccess. Debes añadir reglas al bloque de servidor (server block):

# ejemplo de location para WordPress (Nginx)
location / {
    try_files $uri $uri/ /index.php?$args;
}

Pasos:

  • Añade la directiva try_files al bloque server de tu sitio.
  • Recarga Nginx: sudo systemctl reload nginx (u equivalente).
  • Prueba URLs.

6. Permisos de archivos y propietarios

Permisos comunes:

  • Directorios: 755
  • Archivos: 644
  • .htaccess normalmente 644 (o 664 si el usuario del servidor necesita escribirlo).

Comandos útiles (Linux):

# desde la raíz del sitio
find . -type d -exec chmod 755 {} \;
find . -type f -exec chmod 644 {} \;
# darle propiedad al usuario web (ej: www-data o apache)
sudo chown -R www-data:www-data /ruta/a/tu/sitio

7. Usar WP-CLI para diagnosticar y reparar

Si tienes acceso SSH y WP-CLI instalado:

# comprobar la estructura de permalinks
wp rewrite list
# limpiar y regenerar reglas
wp rewrite flush --hard
# alternativa para solo flush
wp rewrite flush

WP-CLI es muy útil en entornos sin GUI o con permisos de archivo distintos.

8. Problemas con plugins o themes

Pasos para identificar conflictos:

  1. Desactiva todos los plugins y prueba. Si se arregla, reactiva uno a uno para encontrar el culpable.
  2. Cambia temporalmente a un theme por defecto (Twenty Twenty-Three, etc.) y prueba.
  3. Revisa plugins que toquen redirecciones, SEO, caching o seguridad (p. ej. redirection, Yoast, WP Rocket, iThemes).

9. Casos avanzados

Custom Post Types y rewrite rules

Si creas un post type y sus URLs devuelven 404, asegúrate de que al registrar el CPT el parámetro 'rewrite' => true o bien con 'rewrite' => array( 'slug' => 'mi-slug' ). Después de registrar o actualizar un CPT, hay que flush las reglas (guardar permalinks o usar WP-CLI).

// ejemplo básico al registrar un CPT en functions.php
register_post_type('producto', array(
  'labels' => array('name' => 'Productos'),
  'public' => true,
  'has_archive' => true,
  'rewrite' => array('slug' => 'productos')
));
// luego: flush_rewrite_rules() solo en activación de plugin

Uso correcto de flush_rewrite_rules()

No llames a flush_rewrite_rules() en cada carga — solo al activar un plugin o theme (función de activación) para evitar sobrecarga.

10. Checklist final y recomendaciones

  • ¿Guardaste los permalinks en WP? → Sí / No
  • ¿El archivo .htaccess está presente y contiene el bloque de WordPress?
  • ¿Servidor Nginx configurado con try_files?
  • ¿Permisos y propietario correctos?
  • ¿Plugins/theme probados (desactivar y cambiar)?
  • ¿Caché/CDN purgado?
  • ¿WP-CLI usado para regenerar reglas si está disponible?

Soluciones rápidas según síntoma

  • 404 en entradas: Guardar permalinks → revisar .htaccess / try_files.
  • 500 Internal Server Error al guardar permalinks: Revisa error_log, permisos y módulos (mod_rewrite para Apache).
  • WordPress no puede escribir .htaccess: crear manualmente y ajustar permisos/propietario.

Recursos útiles

  • WP-CLI (comandos rewrite y option get rewrite_rules).
  • Documentación de tu hosting sobre Apache/Nginx y permisos.

¿Quieres que te entregue este contenido en un archivo HTML descargable o que lo adapte a un PDF/instrucciones para un hosting específico? Dime y lo preparo.

por Direpe

Deja una respuesta