Los ficheros .htaccess se utilizan para permitir a los dueños de los sitios web hacer algunas configuraciones de sus sitios sin tener que ser administradores de Apache. La configuración que contenga afectará al directorio donde se encuentre el fichero y a todo su árbol de contenido, por lo tanto, es equivalente a aplicar la directiva <Directory> sobre el directorio en el que se encuentra el fichero .htaccess. Como consecuencia de esto, las directivas que puede contener son directivas de contexto directory, que sustituirán los valores previos que tuvieran.
Para que funcione la configuración a través de ficheros .htaccess, el administrador de Apache debe permitirlo a través de la directiva AllowOverride. Esta directiva solo permitirá que se puedan usar determinados grupos de directivas, pero no todas las existente que pueden aplicarse a <Directory>.
Directiva AllowOverride
Sintaxis: AllowOverride { All | None | tipo-de-directiva... }
Contexto: directory
Como se indica, AllowOverride solo puede ir dentro de <Directory>, por lo que la delegación de configuración solo afecta al directorio especificado y todo su árbol de contenido.
Se pueden delegar con All todos los grupos de directivas permitidas, o ninguna con None. Si queremos ser más precisos, los tipos de directivas que se pueden delegar son los siguientes:
- AuthConfig : Permite el uso de directivas relacionadas con la autenticación y la autorización: AuthType, AuthName, AuthUserFile, ..., Require, ...
- FileInfo : Las directivas de este grupo son las relacionadas con las redirecciones, entre otras.
- Indexes : Delega el uso de las directivas que controlan la indexación de los directorios.
- Limit : Permite el control de acceso al estilo de Apache 2.2, con directivas como: Allow, Order y Deny.
- Options[=opción,...] : Relativa al control de ciertas características de los directorios, por ejemplo, las características que controla la directiva Options.
Por seguridad y rendimiento, no se aconseja colocar un fichero .htaccess en el DocumentRoot.
Directiva AllowOverrideList
Sintaxis: AllowOverrideList { None | directiva... }
Contexto: directory
Valor por defecto: None
Con AllowOverrideList podemos especificar las directivas concretas de los grupos que se quieren delegar en los ficheros .htaccess del directorio afectado.
Cuando esta directiva y AllowOverride están a None, los ficheros .htaccess ni siquiera se leen, se ignoran completamente.
En el siguiente ejemplo:
AllowOverride None
AllowOverrideList Redirect RedirectMatch
solo las direcctivas Redirect y RedirectMatch se delegan.
AllowOverride AuthConfig
AllowOverrideList Redirect RedirectMatch
En este último ejemplo, se permiten todas la directivas del grupo AuthConfig y solo Redirect y RedirectMatch del grupo FileInfo.
En el fichero /etc/apache2/apache2.conf ya hay determinadas configuraciones relativas a AllowOverride.
<directory />
Options FollowSymLinks
AllowOverride None
Require all denied
</directory>
<directory /usr/share>
AllowOverride None
Require all granted
</directory>
<directory /var/www>
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</directory>