tl; dr
Sim, é o caminho correto.
Mas para ser mais semântico : Sim, é a maneira correta de permitir .htaccess
substituir todas as diretivas no /var/www
diretório.
Como você descobriu, AllowOverride
é permitido apenas na Directory
seção
Usando seu exemplo:
<Directory "/var/www">
AllowOverride All
</Directory>
Isso está dizendo ao apache que todas as configurações podem ser substituídas nos /var/www
subdiretórios e em todos os seus subdiretórios (recursivamente).
Para um exemplo melhor, 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 /var/www
diretório.
Geralmente não deve ser assim, mas isso é apenas por uma questão de exemplo
Comparando a estrutura de diretórios com a configuração, significa que todos os .htaccess
arquivos dentro da /var/www
pasta e seus subdiretórios, excluindo o /var/www/uploads
diretório e seus subdiretórios, podem substituir todos os tipos de diretivas.
Mas /var/www/uploads
e seus sub-diretórios só pode usar o .htaccess
arquivo para substituir os Allow
, Deny
e Order
directivas.
Nota: No apache 2.4 (disponível por padrão em 13.10 ou superior) Allow
, as diretivas Deny
e Order
foram substituídas por uma única diretiva denominada Require
.