Cómo Eliminar ‘index.php’ de las URLs en WordPress

El Problema con ‘index.php’ en las URLs

Cuando WordPress no puede identificar correctamente que estás usando Apache como servidor web, todas tus URLs incluirán “index.php”. Este problema es común especialmente cuando se ha modificado el nombre del servidor o su configuración, lo que impide que WordPress detecte automáticamente que está corriendo en un servidor Apache.

¿Por qué ocurre esto?

WordPress intenta detectar automáticamente el tipo de servidor web que estás utilizando para configurar las URLs de manera óptima. Sin embargo, en algunas situaciones como:

  • Modificaciones en el nombre del servidor
  • Configuraciones personalizadas de Apache
  • Entornos de servidor no estándar
  • Modificaciones en los headers del servidor

WordPress puede fallar en identificar correctamente que está corriendo en Apache, lo que resulta en la inclusión de “index.php” en todas las URLs.

Ejemplos de URLs problemáticas

Cuando esto sucede, verás URLs con este formato:

  • https://tudominio.com/?p=123
  • https://tudominio.com/index.php/2025/03/mi-articulo/
  • https://tudominio.com/index.php/categoria/articulo/
  • https://tudominio.com/index.php/archivos/123

La Solución: Forzar la Detección de Apache

Para resolver este problema de forma permanente, seguiremos estos pasos:

  1. Accede al servidor
    • Conéctate via SSH a tu servidor
    • Navega al directorio raíz de WordPress
  2. Localiza el archivo vars.php
    • Dirígete a la carpeta wp-includes
    • Busca el archivo vars.php
  3. Modifica el archivo
    • Abre vars.php en un editor
    • Añade esta línea al final del archivo:
      $is_apache = 1;
      
    • Esta línea fuerza a WordPress a reconocer Apache como servidor
  4. Protege el archivo contra modificaciones
    • Usa el comando chattr para hacer el archivo inmutable:
      sudo chattr +i wp-includes/vars.php
      
    • Esto evitará que el archivo sea modificado durante las actualizaciones
    • Para verificar el estado, usa:
      lsattr wp-includes/vars.php
      
  5. Actualiza la configuración
    • Ve a Ajustes > Enlaces permanentes
    • No necesitas cambiar nada, solo guarda
    • Esto regenerará la estructura de URLs

Ejemplo de URLs en WordPress

Consideraciones de seguridad

  • El uso de chattr requiere acceso root al servidor
  • Si necesitas actualizar manualmente el archivo en el futuro:
    sudo chattr -i wp-includes/vars.php  # Permite modificaciones
    # Realiza tus cambios
    sudo chattr +i wp-includes/vars.php  # Vuelve a proteger el archivo
    

Conclusión

Esta solución proporciona una forma permanente de mantener las URLs limpias en WordPress, sin preocuparse por las actualizaciones del sistema. El uso de chattr asegura que el archivo vars.php permanezca intacto, manteniendo tu configuración de URLs consistente en todo momento.