martes, 15 de septiembre de 2009

Exemplo sencillo .htaccess,FilesMatch

Configuración por defecto de .htaccess

Si intentas acceder a tu fichero .htaccess mediante un navegador web, seguramente obtienes un error de acceso denegado (caso contrario deberías revisar tu configuración :D).

Esto pasa porque el archivo de configuración por defecto de apache incluye algunas líneas que prohíben el acceso a cualquier archivo cuyo nombre comience de la forma .ht Identifiquemos las líneas de código: dentro del archivo de configuración httpd encontramos

<FilesMatch "^\.ht">
Order allow,deny
Deny from all
</FilesMatch>

FilesMatch: indica que la regla posteriormente definida se aplicara a los archivos que cumplan cierta condición

Condicion: sentencia que decide a que archivos se aplicaran las reglas posteriormente definidas, en este caso se trata de una sencilla expresion regular que explicaré a continuación...


  • ^ es un indicador global podría traducirse como (todo archivo que comience con)

  • \. Representa el carácter punto (.) cuando hablamos de expresiones regulares debemos tener en cuenta caracteres y meta caracteres, para que un meta carácter sea interpretado como un carácter ordinario es necesario escaparlo previamente, de eso se encarga la barra invertida (\).

  • ht caracteres ordinarios, simplemente indican que la expresión debe coincidir (en dicha parte de la condición) con la forma exacta (ht).

Pasando en limpio e intentando comunicar la condición en “lenguaje natural” por llamarlo de alguna manera. Podríamos decir que: “Se denegara el acceso a todos aquellos archivos cuyo nombre comience con .ht”

¡Valla! a que viéndolo de esa forma es muy sencillo. Quiero destacar que las expresiones regulares son una herramienta extremadamente poderosa, utilizándolas correctamente es posible lograr cosas sorprendentes :O. Por el momento no voy a extenderme en este tema asique recomiendo leer algún tutorial de expresiones regulares, Saludos.

1 comentario:

Fernando dijo...

Para que esto funcione el virtual-host tiene que tener la directiva Limit habilitada:
AllowOverride AuthConfig FileInfo Options Limit