環境、CakePHP のインストール条件
- ドキュメントルートは /var/www/html/
- ドキュメントルートには WordPress がインストールされている
- WordPress 用にパーマリンク設定を施している
- CakePHP を /var/www/html/cake/sample/ にインストールしたい
ポイント
- CakePHP をインストールしたサブディレクトリにアクセスしたとき、CakePHP の webroot/ にアクセスするようにエイリアスを設定する。
- パーマリンク設定を行う。
- もし WordPress のパーマリンク設定が nginx 用に既にされているのなら、不要。(未検証)
具体的に次の設定を加えれば OK でした♪
ドキュメントルートに WordPress をインストールしており、年月日+任意の文字列といった「日付と投稿名」などのパーマリンクを設定している nginx 設定ファイルである、/etc/nginx/conf.d/default.conf のウェブサーバ部分にエイリアス設定を追加するだけで CakePHP を無事に動かすことができました。
location / { # WordPress カスタム パーマネントリンク対応 try_files $uri $uri/ /index.php?q=$uri&$args; } location /cake/sample/ { alias /var/www/html/cake/sample/webroot/; }
WordPress のパーマリンク設定をそのまま使用しておりますので、CakePHP をいじっていくうちに不具合が起こるかもしれません。検証しておりませんの><。
おわりに
公式ドキュメントでも、「nginxでのきれいなURL」の章でパーマリンク設定が紹介されております。
ここでの CakePHP の try_files の設定は次のとおりです。
try_files $uri $uri/ /index.php?$uri&$args;
一方で、WordPress のパーマリンク設定は次のようにしており、若干異なるのです。
try_files $uri $uri/ /index.php?q=$uri&$args;
この差は無視して、CakePHP では WordPress のリライティングを使用しております。今のところ問題は起きておりませんがインストールしただけですのでページを作ってそのページにアクセスしましたら問題が起きるかもしれません。
また、次のページが参考になりました。最初のページから新しい着眼点、ヒントが得られて大変助かりました。ありがとう存じます。
- CakePHPをnginx+php5-fpmで動かしてみる その2 | Seven Words
- nginx上でサブディレクトリのCakePHPアプリを動作させる – うっかり技術支援部署に配属されたので勉強する
以上です。