tl; dr
Sí, es la forma correcta.
Pero para ser más semántico : Sí, es la forma correcta de permitir .htaccess
anular todas las directivas en el /var/www
directorio.
Como descubriste, AllowOverride
solo está permitido en la Directory
sección.
Usando tu ejemplo:
<Directory "/var/www">
AllowOverride All
</Directory>
Esto le dice a Apache que todas las configuraciones pueden ser anuladas en /var/www
y en todos sus subdirectorios (recursivamente).
Para un mejor ejemplo, considere que tiene la siguiente configuración en su host virtual:
<Directory "/var/www">
AllowOverride All
</Directory>
<Directory "/var/www/uploads">
AllowOverride Limit
</Directory>
Y la siguiente estructura de directorios:
var/
www/
.htaccess
uploads/
.htaccess
a/
.htaccess
b/
.htaccess
code/
.htaccess
c/
.htaccess
d/
.htaccess
Lo que hice aquí, es crear un .htaccess
en cada subdirectorio del /var/www
directorio.
Por lo general, no debería ser así, pero esto es solo por el bien del ejemplo
Al comparar la estructura de directorios con la configuración, significa que todos los .htaccess
archivos dentro de la /var/www
carpeta y sus subdirectorios, excluyendo el /var/www/uploads
directorio y sus subdirectorios, pueden anular todo tipo de directivas.
Sin embargo, /var/www/uploads
y sus subdirectorios sólo pueden utilizar el .htaccess
archivo para anular las Allow
, Deny
y Order
las directivas.
Nota: A partir de apache 2.4 (que está disponible por defecto en 13.10+) Allow
, las directivas , Deny
y Order
fueron reemplazadas por una directiva única llamada Require
.