我们最近将其中一台Web服务器切换为apache 2.4,并通过php-fpm和mod_proxy_fcgi运行PHP。大多数事情都运行良好,但是有一个我还不了解的问题。我们的网站之一正在运行WordPress,该网站在其.htaccess文件中提供了大量重写规则。似乎这些与vhost设置中的ProxyPass指令不能很好地配合使用。
我们的虚拟主机包含以下配置:
ProxyPassMatch ^/(.*\.php(/.*)?)$ fcgi://127.0.0.2:9126/<path>/$1
在大多数情况下,这是可行的。
现在,htaccess文件可以执行以下操作:
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]
由于该站点是子目录中的多博客,因此我读到URL /blogname/wp-admin/load-styles.php?xxxx应该重写为wp-admin / load-styles.php?xxx(第二个重写规则)。但是查看mod_proxy日志,实际上传递的请求是/blogname/wp-admin/load-styles.php。
我读此书是因为存在优先级问题– ProxyPass规则在所有RewriteRules处理完毕之前就触发了。
我受阻-可能是什么原因?
RewriteRule
带有[P]
标志的a切换为代理时,它是否可以正常工作?