Di recente abbiamo convertito uno dei nostri server Web in apache 2.4 ed eseguendo PHP tramite php-fpm e mod_proxy_fcgi. Quasi tutto funziona abbastanza bene, ma c'è un problema che non capisco ancora. Uno dei nostri siti esegue WordPress, che porta un buon elenco di regole di riscrittura nel suo file .htaccess. E sembra che quelli non funzionino così bene con la direttiva ProxyPass nella configurazione del vhost.
Il nostro vhost contiene la seguente configurazione:
ProxyPassMatch ^/(.*\.php(/.*)?)$ fcgi://127.0.0.2:9126/<path>/$1
Questo funziona nella maggior parte dei casi.
Ora, il file htaccess fa, tra l'altro, questo:
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]
Poiché il sito è un multiblog in sottodirectory, ho letto che l'URL /blogname/wp-admin/load-styles.php?xxxx dovrebbe essere riscritto come wp-admin / load-styles.php? Xxx (la seconda regola di riscrittura). Ma guardando il registro mod_proxy, la richiesta che viene effettivamente passata è /blogname/wp-admin/load-styles.php.
Ho letto questo perché c'è un problema di precedenza: la regola ProxyPass viene attivata prima che tutte le RewriteRules siano state risolte.
Sono ostacolato - quale può essere la causa?
RewriteRule
con la [P]
bandiera, sotto le altre regole?