Hero

Como evitar que Apache busque el .htacess en todos las carpetas

Noviembre 04, 2013

enzo
Infraestructura y Backend

Si somos fanáticos del servidor web Apache para nuestros proyectos web, es muy probable que también seamos fanáticos del módulo mod_rewrite el cual nos permite transformas las URL en llamados a scripts internos o redirecciones a páginas usando reglas escritas en PCRE Expresiones regulares.

Este módulo de Apache funciona muy bien y la forma mas común de habilitarlo para nuestros sitios se muestra a continuación mediante la definición de un Directoty dentro de la configuración de un VirtualHost.

<Directory /var/www/website>
       Options Indexes FollowSymLinks MultiViews
       AllowOverride All
       Order allow,deny
       allow from all
</Directory>

La anterior instrucción habilita que apache permita el overrride habilitando para que las reglas de nuestro archivo .htaccess sea procesadas de forma automática. Hasta aquí todo bien, pero resulta que esto obliga al Apache que cada vez que se entra en un directorio se intente cargar el archivo de .htacess para procesarlo y como imaginaran esto incluye un esfuerzo adicional en contra del desempeño de nuestro sitio.

Ahora bien como evitamos esto y en todo lado se nos dice que es la forma correcta de hacerlo. Bueno no digo que sea la forma incorrecta solo que quizás no es la mas eficiente.

Veamos un cambio en la configuración anterior para informar a apache que específicamente debe incluir el archivo de .htacess en los directorio que de ante manos sabemos que va a estar disponible.

<Directory /var/www/website>
        Options -Indexes -FollowSymLinks MultiViews
        AllowOverride None
        Order allow,deny
        allow from all
        Include /var/www/website/.htaccess
</Directory>

Adicionalmente si nuestra aplicación utiliza .htacess para proteger algunos archivos como las imágenes podemos indicarlo dentro de la configuración de nuestro virtualhost como se aprecia a continuación.

<Directory /var/www/website/files>
  Include /var/www/website/files/.htaccess
</Directory>

En lo personal he probado esta técnica para aplicaciones web como Drupal y Wordpress

Espero que haya sido de su agrado.

Recibe consejos y oportunidades de trabajo 100% remotas y en dólares de weKnow Inc.