Recientemente cambiamos uno de nuestros servidores web a Apache 2.4 y ejecutamos PHP a través de php-fpm y mod_proxy_fcgi. Casi todo funciona bastante bien, pero hay un problema que aún no entiendo. Uno de nuestros sitios ejecuta WordPress, que trae una buena lista de reglas de reescritura en su archivo .htaccess. Y parece que esos no funcionan tan bien con la directiva ProxyPass en la configuración de vhost.
Nuestro vhost contiene la siguiente configuración:
ProxyPassMatch ^/(.*\.php(/.*)?)$ fcgi://127.0.0.2:9126/<path>/$1
Esto funciona en la mayoría de los casos.
Ahora, el archivo htaccess hace, entre otras cosas, esto:
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 el sitio es un multiblog en subdirectorios, leí que la URL /blogname/wp-admin/load-styles.php?xxxx debería reescribirse como wp-admin / load-styles.php? Xxx (la segunda regla de reescritura). Pero mirando el registro mod_proxy, la solicitud que se pasa realmente es /blogname/wp-admin/load-styles.php.
Leí esto porque hay un problema de precedencia: la regla ProxyPass se dispara antes de que todas las RewriteRules hayan sido resueltas.
Estoy bloqueado, ¿cuál puede ser la causa?
RewriteRule
con la [P]
bandera, debajo de las otras reglas?