07-04-2025

Cómo comprobar que un módulo está cargado en apache

Hace poco hablé sobre los módulos de apache y en este post quiero explicar como comprobar que un módulo está cargado en apache.
Con ifmodule se consigue:
  • Evitar errores: Si el módulo no está cargado, Apache ignora el bloque sin generar un error, lo que es especialmente útil en entornos compartidos donde no controlas qué módulos están habilitados.
  • Portabilidad: Permite que el mismo archivo de configuración funcione en diferentes servidores con configuraciones distintas.
  • Condicionalidad: Ejecuta configuraciones solo si el módulo está disponible, lo que facilita la compatibilidad.

Para realizar esta comprobación hay que usar IfModule y si el módulo está habilitado se ejecutará el código específico de ese módulo.
Ejemplo:

<IfModule rewrite_module>
RewriteEngine On
RewriteRule ^articulo/([0-9]+)/?$ index.php?id=$1 [L]
</IfModule>
En el ejemplo anterior se intenta habilitar la reescritura de URLs con "mod_rewrite" en un archivo ".htaccess:".
  • Si mod_rewrite está cargado, Apache activará el motor de reescritura y aplicará la regla para redirigir URLs como articulo/123 a index.php?id=123.
  • Si mod_rewrite no está habilitado, el bloque se ignora, y Apache no arrojará un error.
Se puede usar con negación (!), si el módulo np está cargado hacer algo:

<IfModule !rewrite_module>
 # Configuraciones alternativas si mod_rewrite no está disponible
ErrorDocument 404 /error.html
</IfModule>
En el ejemplo anterior se muestra una página de error.