Adakah yang bisa menjelaskan kepada saya bagaimana apache mengeksekusi file .htaccess yang berada di berbagai tingkat jalur yang sama dan bagaimana memprioritaskan aturan penulisan ulang di dalamnya?
Misalnya, mengapa aturan penulisan ulang di .htaccess pertama di bawah ini tidak berfungsi dan apakah yang di /blog
prioritaskan?
.htaccess di /
RewriteEngine on
RewriteBase /
RewriteRule ^blog offline.html [L]
.htaccess di /blog
RewriteEngine On
RewriteBase /blog/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /blog/index.php [L]
PS: Saya tidak hanya mencari jawaban tetapi cara untuk memahami internal apache / mod_rewrite ... mengapa lebih penting bagi saya daripada bagaimana memperbaikinya,
sumber
Anda dapat menggunakan
RewriteOptions inherit
untuk mewarisi aturan penulisan ulang direktori induk. Namun, aturan penulisan ulang direktori induk akan diterapkan kemudian, sesuai dokumentasi pada RewriteOptions .sumber
mod_rewrite
arahan tidak diwarisi secara default (berbeda dengan modul lainnya). Anda akan membutuhkanRewriteOptions InheritXXXX
arahan di suatu tempat untuk arahan diwarisi. Namun, ini menjadi lebih kompleks di Apache 2.4+ denganInheritDown
opsi yang dapat ditentukan dalam direktori induk dan konfigurasi server yang kemudian mengontrol direktori anak.