PR

[CakePHP] Webrootを使わない方法

CakePHP は大変良く出来ていて、既存のサイトにすんなり導入することができる。例えば、すでにある public_html の内容をそのまま CakePHP の webroot へ移動すればいい。何事もなかったかのようにそのまま利用できる。この方法を使えば phpMyAdmin や wordpress など複雑なものもそこに入れてしまえばいい。

しかし、内部で転送が何度も行われることになったり、実際のディレクトリと異なる場所に設置されているため、場合によっては不都合があるかもしれない。例えば wordpress を webroot に設置した場合、何もなければ / にアクセスすれば webroot の内容が出る。が、内容によっては /app/webroot/ と表示されてしまうことがある。また、未検証だが次回以降もログイン状態を保持する cookie が保存できないのもこれに関連があるのかもしれない。もちろん、普通に利用する分には何ら問題はない。

スポンサードリンク

通常は素直に webroot に置くとして、 理由があって CakePHP の .htaccess による mod_rewrite を回避するためには以下のようにする。なお、ここでは /app と同列に別のシステムを置くものとする( = /app, /blog など)

<IfModule mod_rewrite.c>
 RewriteEngine on

 # type A
 RewriteCond %{REQUEST_URI} ^/blog/(.*)$
 RewriteRule ^.*$ - [L]

 # type B
 #RewriteRule    blog/(.*) blog/$1 [L]

 # cakephp default
 RewriteRule    ^$ app/webroot/    [L]
 RewriteRule    (.*) app/webroot/$1 [L]
</IfModule>


参考文献

コメント