tl; dr
Sim, é a maneira correta.
Mas para ser mais semântico : Sim, é a maneira correta de permitir que .htaccess
substitua todas as diretivas no diretório /var/www
.
Como você descobriu, AllowOverride
é permitido somente sob Directory
seção.
Usando seu exemplo:
<Directory "/var/www">
AllowOverride All
</Directory>
Isto está dizendo ao apache, que todas as configurações podem ser sobrescritas no /var/www
e em todos os seus subdiretórios (recursivamente).
Para um melhor exemplo, considere que você tem a seguinte configuração em seu host virtual:
<Directory "/var/www">
AllowOverride All
</Directory>
<Directory "/var/www/uploads">
AllowOverride Limit
</Directory>
E a seguinte estrutura de diretórios:
var/
www/
.htaccess
uploads/
.htaccess
a/
.htaccess
b/
.htaccess
code/
.htaccess
c/
.htaccess
d/
.htaccess
O que eu fiz aqui, é criar um .htaccess
em todos os subdiretórios do diretório /var/www
. Geralmente não deveria ser assim, mas isso é apenas para o causa do exemplo
Comparando a estrutura de diretórios com a configuração, isso significa que todos os arquivos .htaccess
dentro da pasta /var/www
e seus subdiretórios, excluindo o diretório /var/www/uploads
e seus subdiretórios, podem substituir todos os tipos de diretivas .
Mas /var/www/uploads
e seus subdiretórios só podem usar o arquivo .htaccess
para substituir as diretivas Allow
, Deny
e Order
.
Nota: A partir do apache 2.4 (que está disponível por padrão no 13.10+), as diretivas Allow
, Deny
e Order
foram substituídas por uma única diretiva denominada Require
.