¿Por qué Apache lee archivos .htaccess aunque estén deshabilitados?
Según la documentación de Apache, configurar las opciones AllowOverride
y AllowOverrideList
en None
, ignorará completamente los .htaccess
archivos. Ni siquiera intentar leerlos desde el sistema de archivos.
Tengo ambas opciones configuradas, none
pero Apache todavía lee los .htaccess
archivos. Lo sé porque si coloco un .htaccess
archivo con algunas directivas válidas, arroja un error 500. Al comentar las directivas (esencialmente un .htaccess
archivo vacío ), no se produce el error 500. Entonces, obviamente, Apache todavía está leyendo los .htaccess
archivos.
Registro de errores de Apache2 (desinfectado para consumo público):
[jueves 30 de julio 23: 36: 35.393831 2020] [núcleo: alerta] [pid 60903] [cliente dddd: 10554] /var/www/example/.htaccess: Requerir no permitido aquí , árbitro:http://example.net/
La pregunta es ¿por qué? ¿Qué me estoy perdiendo? ¿Cómo hacer que se comporte según la documentación? es decir, ni siquiera intente leer los .htaccess
archivos.
Referencia: https://httpd.apache.org/docs/2.4/mod/core.html#allowoverride
Cuando esta directiva se establece en None y AllowOverrideList se establece en None, los archivos .htaccess se ignoran por completo. En este caso, el servidor ni siquiera intentará leer archivos .htaccess en el sistema de archivos.
Respuestas
Esto parecería ser un error en versiones anteriores de Apache 2.4 que, según se informa, se corrigió en Apache 2.4.20
https://bz.apache.org/bugzilla/show_bug.cgi?id=58528
El error parece ser que cuando se establece explícitamente AllowOverrideList None
el valor no se restablece correctamente .
He verificado que veo el mismo comportamiento (incorrecto) en Apache 2.4.7
Si nunca ha establecido AllowOverrideList
otro lugar en la configuración de su servidor, puede omitir esta directiva, ya que la predeterminada es None
. (Cuando se deja como predeterminado , parece que se interpreta correctamente según los documentos).