Quelqu'un peut-il m'expliquer dans quel ordre apache exécute les fichiers .htaccess résidant à différents niveaux du même chemin et comment les règles de réécriture qui s'y trouvent sont hiérarchisées?
Par exemple, pourquoi la règle de réécriture du premier .htaccess ci-dessous ne fonctionne-t-elle pas et celle-ci est-elle /blog
priorisée?
.htaccess dans /
RewriteEngine on
RewriteBase /
RewriteRule ^blog offline.html [L]
.htaccess dans /blog
RewriteEngine On
RewriteBase /blog/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /blog/index.php [L]
PS: Je ne cherche pas simplement une réponse mais un moyen de comprendre les internes d'apache / mod_rewrite ... pourquoi est plus important pour moi que comment y remédier,
la source
Vous pouvez utiliser
RewriteOptions inherit
pour hériter des règles de réécriture du répertoire parent. Cependant, les règles de réécriture du répertoire parent seront appliquées ultérieurement, conformément à la documentation sur RewriteOptions .la source
mod_rewrite
directives ne sont pas héritées par défaut (différentes des autres modules). Vous auriez besoin d'uneRewriteOptions InheritXXXX
directive quelque part pour que les directives soient héritées. Cependant, cela devient plus complexe sur Apache 2.4+ avec l'InheritDown
option qui peut être spécifiée dans les répertoires parents et la configuration du serveur qui contrôle ensuite les répertoires enfants.