tl; dr
Tak, to właściwy sposób.
Ale aby być bardziej semantycznym : Tak, jest to właściwy sposób, aby zezwolić .htaccessna zastąpienie wszystkich dyrektyw w /var/wwwkatalogu.
Jak się dowiedziałeś, AllowOverridedozwolone jest tylko w Directorysekcji.
Na twoim przykładzie:
<Directory "/var/www">
AllowOverride All
</Directory>
Mówi to Apache, że wszystkie konfiguracje można przesłonić we /var/wwwwszystkich 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 .htaccessw każdym podkatalogu /var/wwwkatalogu.
Zwykle nie powinno tak być, ale tylko dla przykładu
Porównując strukturę katalogów z konfiguracją, oznacza to, że wszystkie .htaccesspliki w /var/wwwfolderze i jego podkatalogach, z wyjątkiem /var/www/uploadskatalogu i jego podkatalogów, mogą zastępować wszelkiego rodzaju dyrektywy.
Ale /var/www/uploadsi jego podkatalogów mogą używać tylko .htaccessplik, aby zastąpić Allow, Denyi Orderwskazówki.
Uwaga: Od wersji Apache 2.4 (która jest domyślnie dostępna w wersji 13.10+) Allow, dyrektywy Denyi Orderzostały zastąpione jedną dyrektywą o nazwie Require.