Nous avons récemment basculé l'un de nos serveurs Web vers Apache 2.4 et exécuté PHP via php-fpm et mod_proxy_fcgi. Presque tout fonctionne assez bien, mais il y a un problème que je ne comprends pas encore. L'un de nos sites exécute WordPress, qui apporte une bonne liste de règles de réécriture dans son fichier .htaccess. Et il semble que ceux-ci ne fonctionnent pas si bien avec la directive ProxyPass dans la configuration de vhost.
Notre vhost contient la configuration suivante:
ProxyPassMatch ^/(.*\.php(/.*)?)$ fcgi://127.0.0.2:9126/<path>/$1
Cela fonctionne dans la plupart des cas.
Maintenant, le fichier htaccess fait, entre autres, ceci:
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]
Comme le site est un multiblog dans des sous-répertoires, j'ai lu que l'URL /blogname/wp-admin/load-styles.php?xxxx devrait être réécrite en wp-admin / load-styles.php? Xxx (la deuxième règle de réécriture). Mais en regardant le journal mod_proxy, la demande qui est passée est en fait /blogname/wp-admin/load-styles.php.
J'ai lu cela comme un problème de priorité - la règle ProxyPass se déclenche avant que toutes les règles de réécriture aient été résolues.
Je suis bloqué - quelle peut être la cause?
RewriteRule
avec le [P]
drapeau, en dessous des autres règles?