Recentemente, trocamos um de nossos servidores da web para o apache 2.4 e executando o PHP via php-fpm e mod_proxy_fcgi. Quase tudo funciona muito bem, mas há um problema que ainda não entendi. Um de nossos sites está executando o WordPress, que traz uma boa lista de regras de reescrita em seu arquivo .htaccess. E parece que esses não funcionam tão bem com a diretiva ProxyPass na configuração do vhost.
Nosso vhost contém a seguinte configuração:
ProxyPassMatch ^/(.*\.php(/.*)?)$ fcgi://127.0.0.2:9126/<path>/$1
Isso funciona na maioria dos casos.
Agora, o arquivo htaccess faz, entre outras coisas, isso:
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]
Como o site é um multiblog em subdiretórios, li que o URL /blogname/wp-admin/load-styles.php?xxxx deve ser reescrito como wp-admin / load-styles.php? Xxx (a segunda regra de reescrita). Mas olhando para o log mod_proxy, a solicitação que é passada na verdade é /blogname/wp-admin/load-styles.php.
Eu li isso como um problema de precedência - a regra ProxyPass é acionada antes que todas as RewriteRules tenham sido resolvidas.
Estou frustrado - qual pode ser a causa?
RewriteRule
com a [P]
bandeira, abaixo das outras regras?