端くれプログラマの備忘録 CakePHP [CakePHP] WordPressを共存させる

[CakePHP] WordPressを共存させる

例えば、以下の構成の会社サイトをCakePHPベースで構築するとする。

  • / ホーム
  • /products 製品紹介
  • /support サポート
  • /about 会社紹介
  • /contact お問い合わせ

そこへ社長が「会社サイト内に社長ブログを設置したい」と言い出したとする。

  • /blog 社長のブログ

カスタムでブログCMSを作る予算は無いので、じゃあWordPressを使いましょうという話になったとする。で、CakePHPにどうやってWordPressを入れ込むか、という話になる。

WordPressを配置するディレクトリ

事前準備として、まずはWordPressを配置するディレクトリを決める。CakePHPのルールではapp/webrootがホームなので、そこにWordPressを配置するのが定石かもしれない。

だけど、そうするとWordPressがCakePHPに依存しすぎる感じがする。もし将来CakePHP以外のフレームワークを使ってサイトを作り直すことがあると、WordPressを移動させる必要が出てきてしまう。CakePHPとWordPressの2つのCMSの依存関係は出来る限り低くしておきたいので、CakePHPの内部にWordPressを配置することは得策ではないように思う。

というわけで、WordPressは公開ディレクトリのホーム直下に配置することにする。こうしておけば、もしCakePHP関係のファイルを全て削除したとしても、WordPressは生き残る。

  • /www
    • /app
    • /blog ← ここにWordPressを配置
    • /lib
    • /plugin
    • /vendors

.htaccessの設定

あとは、ブログへのアクセスが正しくWordPressに流れるように.htaccessを設定してやればよい。

ホームディレクトリの.htaccessを見ると、全てのトラフィックはapp/webroot以下に転送されるようになっているので、blogへのトラフィックだけはblogディレクトリ以下に転送されるように、以下のように設定を追記する。

<IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteRule ^blog$ blog/      ← 追記
    RewriteRule ^blog/(.*)$ - [L] ← 追記
    RewriteRule ^$ app/webroot/ [L]
    RewriteRule (.*) app/webroot/$1 [L]
</IfModule>

これで事前準備は完了。あとは通常通りWordPressの初期設定をすればよい。