Alguém pode me explicar em que ordem o apache executa arquivos .htaccess que residem em diferentes níveis do mesmo caminho e como as regras de reescrita são priorizadas?
Por exemplo, por que a regra de reescrita no primeiro .htaccess abaixo funciona e é /blog
priorizada?
.htaccess em /
RewriteEngine on
RewriteBase /
RewriteRule ^blog offline.html [L]
.htaccess em /blog
RewriteEngine On
RewriteBase /blog/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /blog/index.php [L]
PS: Não estou simplesmente procurando uma resposta, mas uma maneira de entender os internos do apache / mod_rewrite ... por que é mais importante para mim do que como corrigir isso,
fonte
Você pode usar
RewriteOptions inherit
para herdar as regras de reescrita do diretório pai. No entanto, as regras de reescrita do diretório pai serão aplicadas posteriormente, conforme a documentação em RewriteOptions .fonte
mod_rewrite
diretivas não são herdadas por padrão (diferentes de outros módulos). Você precisaria de umaRewriteOptions InheritXXXX
diretiva em algum lugar para as diretivas serem herdadas. No entanto, isso fica mais complexo no Apache 2.4+ com aInheritDown
opção que pode ser especificada nos diretórios pai e na configuração do servidor que controla os diretórios filhos.