tl; dr
Tak, to właściwy sposób.
Ale aby być bardziej semantycznym : Tak, jest to właściwy sposób, aby zezwolić .htaccess
na zastąpienie wszystkich dyrektyw w /var/www
katalogu.
Jak się dowiedziałeś, AllowOverride
dozwolone jest tylko w Directory
sekcji.
Na twoim przykładzie:
<Directory "/var/www">
AllowOverride All
</Directory>
Mówi to Apache, że wszystkie konfiguracje można przesłonić we /var/www
wszystkich jego podkatalogach (rekurencyjnie).
Aby uzyskać lepszy przykład, weź pod uwagę, że na wirtualnym hoście masz następującą konfigurację:
<Directory "/var/www">
AllowOverride All
</Directory>
<Directory "/var/www/uploads">
AllowOverride Limit
</Directory>
I następująca struktura katalogów:
var/
www/
.htaccess
uploads/
.htaccess
a/
.htaccess
b/
.htaccess
code/
.htaccess
c/
.htaccess
d/
.htaccess
To, co tutaj zrobiłem, to utworzenie .htaccess
w każdym podkatalogu /var/www
katalogu.
Zwykle nie powinno tak być, ale tylko dla przykładu
Porównując strukturę katalogów z konfiguracją, oznacza to, że wszystkie .htaccess
pliki w /var/www
folderze i jego podkatalogach, z wyjątkiem /var/www/uploads
katalogu i jego podkatalogów, mogą zastępować wszelkiego rodzaju dyrektywy.
Ale /var/www/uploads
i jego podkatalogów mogą używać tylko .htaccess
plik, aby zastąpić Allow
, Deny
i Order
wskazówki.
Uwaga: Od wersji Apache 2.4 (która jest domyślnie dostępna w wersji 13.10+) Allow
, dyrektywy Deny
i Order
zostały zastąpione jedną dyrektywą o nazwie Require
.