Czy ktoś może mi wyjaśnić, w jakiej kolejności apache wykonuje pliki .htaccess znajdujące się na różnych poziomach tej samej ścieżki i w jaki sposób reguły przepisywania w nich są traktowane priorytetowo?
Na przykład, dlaczego reguła przepisywania w pierwszym .htaccess poniżej nie działa i czy ta zasada ma /blog
priorytet?
.htaccess in /
RewriteEngine on
RewriteBase /
RewriteRule ^blog offline.html [L]
.htaccess in /blog
RewriteEngine On
RewriteBase /blog/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /blog/index.php [L]
PS: Nie szukam tylko odpowiedzi, ale sposobu na zrozumienie wewnętrznych elementów apache / mod_rewrite ... dlaczego jest dla mnie ważniejszy niż jak to naprawić,
źródło
Możesz użyć
RewriteOptions inherit
do dziedziczenia reguł przepisywania katalogu nadrzędnego. Jednak reguły przepisywania katalogu nadrzędnego zostaną zastosowane później, zgodnie z dokumentacją RewriteOptions .źródło
mod_rewrite
dyrektywy nie są dziedziczone domyślnie (inaczej niż inne moduły). Potrzebny jestRewriteOptions InheritXXXX
dyrektywa gdzieś do dyrektyw być dziedziczone. Jest to jednak bardziej skomplikowane w Apache 2.4+ zInheritDown
opcją, którą można określić w katalogach nadrzędnych i konfiguracji serwera, która następnie kontroluje katalogi podrzędne.