¿Alguien puede explicarme en qué orden apache ejecuta archivos .htaccess que residen en diferentes niveles de la misma ruta y cómo se priorizan las reglas de reescritura?
Por ejemplo, ¿por qué no funciona la regla de reescritura en el primer .htaccess a continuación y se /blog
prioriza?
.htaccess en /
RewriteEngine on
RewriteBase /
RewriteRule ^blog offline.html [L]
.htaccess en /blog
RewriteEngine On
RewriteBase /blog/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /blog/index.php [L]
PD: no solo estoy buscando una respuesta, sino una forma de entender los aspectos internos de apache / mod_rewrite ... por qué es más importante para mí que cómo solucionar esto,
fuente
Puede usar
RewriteOptions inherit
para heredar las reglas de reescritura del directorio principal. Sin embargo, las reglas de reescritura del directorio principal se aplicarán más adelante, según la documentación de RewriteOptions .fuente
mod_rewrite
directivas no se heredan por defecto (diferentes a otros módulos). Necesitaría unaRewriteOptions InheritXXXX
directiva en algún lugar para que las directivas se hereden. Sin embargo, esto se vuelve más complejo en Apache 2.4+ con laInheritDown
opción que se puede especificar en los directorios principales y la configuración del servidor que luego controla los directorios secundarios.