Help us understand the problem. What is going on with this article?

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

More than 1 year has passed since last update.

概要

サイト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>
...

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

papillon
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした