tl; dr
Oui c'est la bonne façon.
Mais pour être plus sémantique : oui, c’est la bonne façon de permettre .htaccessde surcharger toutes les directives du /var/wwwrépertoire.
Comme vous l'avez découvert, AllowOverrideest autorisé uniquement dans cette Directorysection.
En utilisant votre exemple:
<Directory "/var/www">
AllowOverride All
</Directory>
Cela indique à Apache que toutes les configurations peuvent être remplacées dans le /var/wwwsous-répertoire et dans tous ses sous-répertoires (de manière récursive).
Pour un meilleur exemple, considérons que vous avez la configuration suivante dans votre hôte virtuel:
<Directory "/var/www">
AllowOverride All
</Directory>
<Directory "/var/www/uploads">
AllowOverride Limit
</Directory>
Et la structure de répertoire suivante:
var/
www/
.htaccess
uploads/
.htaccess
a/
.htaccess
b/
.htaccess
code/
.htaccess
c/
.htaccess
d/
.htaccess
Ce que j'ai fait ici, c'est créer un .htaccessdans chaque sous-répertoire du /var/wwwrépertoire.
Cela ne devrait généralement pas être comme ça, mais ceci est juste pour l'exemple
En comparant la structure de répertoires à la configuration, cela signifie que tous les .htaccessfichiers du /var/wwwdossier et de ses sous-répertoires, à l'exception du /var/www/uploadsrépertoire et de ses sous-répertoires, peuvent remplacer tous les types de directives.
Mais /var/www/uploadset ses sous-répertoires ne peuvent utiliser le .htaccessfichier que pour remplacer les directives Allow, Denyet Order.
Remarque: À partir d'apache 2.4 (disponible par défaut dans 13.10+) Allow, les directives , Denyet Orderont été remplacées par une seule directive nommée Require.