tl; dr
Sì, è il modo corretto.
Ma per essere più semantici : Sì, è il modo corretto per consentire .htaccess
di sovrascrivere tutte le direttive nella /var/www
directory.
Come hai scoperto, AllowOverride
è consentito solo nella Directory
sezione.
Usando il tuo esempio:
<Directory "/var/www">
AllowOverride All
</Directory>
Questo sta dicendo ad Apache che tutte le configurazioni possono essere sovrascritte in /var/www
tutte le sue sottodirectory (ricorsivamente).
Per un esempio migliore, considera di avere la seguente configurazione nel tuo host virtuale:
<Directory "/var/www">
AllowOverride All
</Directory>
<Directory "/var/www/uploads">
AllowOverride Limit
</Directory>
E la seguente struttura di directory:
var/
www/
.htaccess
uploads/
.htaccess
a/
.htaccess
b/
.htaccess
code/
.htaccess
c/
.htaccess
d/
.htaccess
Quello che ho fatto qui, è creare un .htaccess
in ogni sottodirectory della /var/www
directory.
Di solito non dovrebbe essere così, ma questo è solo per il bene dell'esempio
Confrontando la struttura delle directory con la configurazione, significa che tutti i .htaccess
file all'interno della /var/www
cartella e le sue sottodirectory, esclusa la /var/www/uploads
directory e le sue sottodirectory, possono sovrascrivere tutti i tipi di direttive.
Ma /var/www/uploads
ei suoi sotto-directory possono utilizzare solo il .htaccess
file per ignorare le Allow
, Deny
e Order
direttive.
Nota: A partire da apache 2.4 (che è disponibile di default in 13.10+) Allow
, le direttive Deny
e Order
sono state sostituite da un'unica direttiva denominata Require
.