最近、Webサーバーの1つをApache 2.4に切り替え、php-fpmおよびmod_proxy_fcgiを介してPHPを実行しました。ほとんどすべてが非常にうまく機能していますが、まだ理解していない問題が1つあります。私たちのサイトの1つはWordPressを実行しています。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(2番目の書き換えルール)に書き換える必要があることを読みました。しかし、mod_proxyログを見ると、実際に渡される要求は/blogname/wp-admin/load-styles.phpです。
優先順位の問題があるため、これを読みました。すべてのRewriteRulesが完了する前に、ProxyPassルールが起動します。
私は困惑しています-原因は何ですか?
RewriteRule
で、[P]
フラグを使用してを介してプロキシに切り替えると、正しく機能しますか?