CakePHP内にWordPressを設置する
CakePHPで構築したサイトは、「mod_rewrite」によりCakePHPで設定したルーティングに従って、コンテンツの内容が決定します。
つまり、デフォルトではCakePHPをインストールしたディレクトリの配下は、全てコントローラとアクションで処理されるということです。
これではMovableTypeやWordPressをインストールする場合に困ります。
例えば、wpというフォルダを作り、「http://localhost/wp/」にアクセスしてWordPressをインストールしようとしても、処理がCakePHPのwpコントローラに渡されてしまい、WordPressのソースにアクセスできません。
このルールは文頭でも触れたように、ルートディレクトリに設置した「.htaccess」に記述してある「mod_rewrite」で制御されています。つまり、「.htaccess」を書き換えることで、この問題を解消できます。
まずは、CakePHP設置の際のデフォルトの「.htaccess」の内容です。
<IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ index.php?url=$1 [QSA,L] </IfModule>
例えば、上記のようにWordPressにアクセスするためには、ディレクトリ「wp」をCakePHPで処理する例外として設定してあげます。
<IfModule mod_rewrite.c> RewriteEngine On RewriteCond $1 !^/wp/ RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ index.php?url=$1 [QSA,L] </IfModule>
さらに、MovableTypeも運用したいのでフォルダ「mt」も利用したいといった場合には、以下のようにすれば複数のディレクトリを開放する事ができます。
<IfModule mod_rewrite.c> RewriteEngine On RewriteCond $1 !^(/wp/|/mt/) RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ index.php?url=$1 [QSA,L] </IfModule>