Entradas con el tag ‘LAMP’

Post

Htaccess. Más mal que bien?

Publicado en Sysadmin el 26 de mayo de 2010 by Reven | Tags: , ,

Los archivos .htaccess, llamados también “archivos de configuración distribuidos“, son una forma de controlar la configuración de Apache a nivel de cada directorio. Se han hecho terriblemente populares gracias a los servicios de alojamiento compartidos, en los que no es recomendable dar acceso a la configuración de Apache a los usuarios, y por tanto esta es la única forma de que estos la cambien.

El uso de archivos .htaccess se ha extendido hasta el punto de que muchos usuarios creen que deben ser usados para cosas como la autentificación de usuarios o las reglas de re-escritura (Rewrite) de la URL.

Muchos desarrolladores, entre los cuales me incluyo, que luego se pasan a un servidor privado (o VPS) siguen usando los archivos .htaccess indiscriminadamente, sin darse cuenta del golpe que esto supone al rendimiento de Apache, sobre todo teniendo en cuenta que los recursos de esos sistemas suelen ser limitados. La documentación de Apache sobre .htaccess lo deja bien claro:

En general, nunca se deberían utilizar archivos .htaccess cuando se tiene acceso al archivo de configuración principal del servidor.

Apache .htaccess docs

La primera razón para esto, es que cada vez que se le pide un archivo a Apache, éste deberá buscar un archivo .htaccess en ese directorio y los superiores para ver si se aplican reglas adicionales a las que tiene en la configuración principal (la cual se carga una sola vez, al iniciar Apache). Además en el caso de que encuentre el archivo, deberá cargarlo e interpretarlo.

La segunda razón es la seguridad. El archivo de configuración principal suele estar fuera de la raíz del servidor y bien protegido con los permisos adecuados. Los archivos .htaccess son un poco más susceptibles a ataques si la configuración de Apache no es la adecuada y también son más susceptibles a errores que pueden comprometer la seguridad de otros archivos.

No hay ningún ajuste de configuración que no pueda ponerse en el archivo central. Así, los siguientes 2 bloques son equivalentes:

Archivo .htaccess en /www/htdocs/example

RewriteEngine On
RewriteCond %{REQUEST_URI} !/paginavieja.html$
RewriteRule $ /paginanueva.html [R=302,L]

Archivo de configuración principal de Apache:

<Directory /www/htdocs/example>
RewriteEngine On
RewriteCond %{REQUEST_URI} !/paginavieja.html$
RewriteRule $ /paginanueva.html [R=302,L]
</Directory>

Para evitar que Apache siga buscando archivos .htaccess, tendremos que encontrar la directriz AllowOverride en la configuración y cambiarla a lo siguiente:

AllowOverride None

Conseguiremos un incremento de rendimiento notable.

Compartir
DiggMenéamedel.icio.usFacebookReddit