LoginSignup
1
2

More than 5 years have passed since last update.

Apache httpdとmod_rewriteとphp-fpmで少しハマった

Last updated at Posted at 2018-03-26

概要

サイトA(http://hoge.host)にアクセスしてきたとき、一部コンテンツをサイトB(http://fuga.host)にリダイレクトしたかったとき少しハマったので備忘録的にメモしておく。

前提

  • サイトAではApache httpd 2.4とPHPが動作している。
  • サイトAの一部URL(http://hoge.host/a/)にアクセスしたときはサイトAのサーバで処理し、別のURL(http://hoge.host/b/)にアクセスしたときはサイトB(http://fuga.host/b/)に転送させたい。

ここまでであればhttpdとmod_rewriteで問題なかったのだが、httpdのeventモジュールとphp-fpmの設定を追加したタイミングで一部URLのリダイレクトに問題が出ていることが分かった。
具体的にはhttp://hoge.host/b/aaa.jpgは問題ないが、http://hoge.host/b/bbb.phpのようなリクエストの場合に書き換えに失敗していた。

原因と解決

mod_rewriteでの書き換えはwwwrootに設置してある.htaccessで処理していたのが、httpdの設定で先にphp-fpmにcgiで処理を投げていたため、RewriteCondを満たしていてもURLの書き換えが出来ないという状態だった。

以下のようにhttpdの設定ファイルを書き換えることでcgiに投げるURLを制限して解決した。

/etc/httpd/conf.modules.d/01-cgi.conf
...
<IfModule mpm_event_module>
   LoadModule cgid_module modules/mod_cgid.so
   ProxyPassMatch ^/(^b)(.*\.php(/.*)?)$ fcgi://127.0.0.1:9000/path/to/webroot/$1
</IfModule>
...

あるいはこちらに記載のようにやる。

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2