Inicio » Cómo solucionar el error 500 Internal Server Error por conflicto en .htaccess
Sistemas y Servidores

Cómo solucionar el error 500 Internal Server Error por conflicto en .htaccess

✨ Respuesta Rápida

El error 500 Internal Server Error en Apache es una de las respuestas de fallo más genéricas y frustrantes. Ocurre con frecuencia inmediatamente después de modificar el archivo .htaccess, introducir reglas de reescritura incorrectas (mod_rewrite), o incluir directivas de módulos que no están instalados o activados en el servidor web.

El Diagnóstico Rápido

Causa
HTTP 500 tras editar .htaccess o instalar un plugin/CMS: Directiva no válida, error tipográfico de sintaxis o módulo de Apache no activado (ej. mod_rewrite o mod_headers)
Solución
Revisar los registros de error de Apache (error.log), renombrar el archivo temporalmente y corregir o envolver las directivas en bloques <IfModule>

La Solución Paso a Paso

  1. 1

    Paso 1: Isolar el problema usando el archivo .htaccess

    Para confirmar al 100% que el origen del error 500 es el archivo .htaccess, conéctate a tu servidor mediante SSH o FTP y renombra el archivo temporalmente:

    BASH
    # Navegar al directorio raíz web (por ejemplo /var/www/html)
    cd /var/www/html
    
    # Renombrar el archivo para desactivarlo temporalmente
    mv .htaccess .htaccess.bak
    

    Intenta recargar el sitio web en tu navegador. Si el error 500 desaparece (o cambia a un 404 esperable), has confirmado que la causa reside en una directiva corrupta dentro de .htaccess.

  2. 2

    Paso 2: Consultar los registros de error de Apache (error.log)

    Apache registra el motivo exacto y la línea que provoca la falla. Ejecuta el siguiente comando para inspeccionar las últimas líneas del registro en tiempo real:

    BASH
    # En Debian/Ubuntu
    sudo tail -f /var/log/apache2/error.log
    
    # En RHEL/CentOS/Rocky Linux
    sudo tail -f /var/log/httpd/error_log
    

    Busca líneas con el estado [core:alert] conteniendo errores como:

    • Invalid command 'RewriteEngine', perhaps misspelled or defined by a module not included in the server configuration
    • CustomLog not allowed here
  3. 3

    Paso 3: Habilitar los módulos de Apache requeridos

    Si el log indica que una directiva como RewriteEngine o Header no es válida, significa que el módulo correspondiente no está activo. Habilítalos ejecutando:

    BASH
    # Activar mod_rewrite y mod_headers en Ubuntu/Debian
    sudo a2enmod rewrite headers
    
    # Reiniciar el servicio de Apache para aplicar los cambios
    sudo systemctl restart apache2
    
  4. 4

    Paso 4: Envolver directivas condicionales y validar la sintaxis

    Para evitar que faltas de módulos bloqueen todo el servidor con un error 500, envuelve las directivas sensibles dentro de condicionales de módulo en tu archivo .htaccess:

    APACHE
    # Asegurar que las reglas de reescritura solo se ejecuten si mod_rewrite está cargado
    <IfModule mod_rewrite.c>
        RewriteEngine On
        RewriteBase /
        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteCond %{REQUEST_FILENAME} !-d
        RewriteRule ^ index.php [L]
    </IfModule>
    
    # Proteger la manipulación de cabeceras de caché
    <IfModule mod_headers.c>
        Header set X-Content-Type-Options "nosniff"
    </IfModule>
    

Consejo de Prevención

Prácticas de seguridad recomendadas:

  • Crear copias de respaldo siempre: Realiza un cp .htaccess .htaccess.bak antes de pegar fragmentos de código tomados de internet.
  • Usar bloques <IfModule>: Nunca incluyas directivas de compresión (mod_deflate) o cabeceras de seguridad sin comprobar primero su disponibilidad con <IfModule>.
  • Verificar permisos del archivo: Asegúrate de que .htaccess tenga permisos 644 (propiedad de www-data o de tu usuario con lectura pública). Permisos excesivos como 777 pueden ser rechazados por ciertas configuraciones de seguridad de Apache (SUEXEC).
Autor • Diseñador Web & Creador de Apps

Rodolfo Castro

Diseñador web, creador de aplicaciones y fundador de SoporteCero. Especialista en desarrollo de productos digitales, interfaz de usuario y arquitectura web. Cada tutorial y solución de SoporteCero es reproducido y verificado en laboratorio técnico para ofrecer guías funcionales y actualizadas.