Kami baru-baru ini mengganti salah satu server web kami ke apache 2.4 dan menjalankan PHP melalui php-fpm dan mod_proxy_fcgi. Kebanyakan semuanya bekerja dengan baik, tetapi ada satu masalah yang saya belum mengerti. Salah satu situs kami menjalankan WordPress, yang membawa daftar aturan penulisan ulang yang baik dalam file .htaccess-nya. Dan tampaknya itu tidak bekerja dengan baik dengan arahan ProxyPass di pengaturan vhost.
Vhost kami berisi konfigurasi berikut:
ProxyPassMatch ^/(.*\.php(/.*)?)$ fcgi://127.0.0.2:9126/<path>/$1
Ini berfungsi dalam banyak kasus.
Sekarang, file htaccess tidak, antara lain, ini:
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(wp-(content|admin|includes).*) $2 [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(.*\.php)$ $2 [L]
RewriteRule . index.php [L]
Karena situs ini adalah multiblog dalam subdirektori, saya membaca bahwa URL /blogname/wp-admin/load-styles.php?xxxx harus ditulis ulang sebagai wp-admin / load-styles.php? Xxx (aturan penulisan ulang kedua). Tetapi melihat pada mod_proxy log, permintaan yang dikirimkan sebenarnya adalah /blogname/wp-admin/load-styles.php.
Saya membaca ini karena ada masalah yang diutamakan - aturan ProxyPass menyala sebelum semua RewriteRules diselesaikan.
Saya terhalang - apa yang bisa menjadi penyebabnya?
RewriteRule
dengan [P]
bendera, di bawah aturan lain?