CakePHPでも、やっぱりmod_rewrite関係でハマる…。
DocumentRoot直下にCakePHP一式を配置する場合は良いが、/sample/配下のように、サブディレクトリを掘って、その下にCakePHPとスクリプト群を配置する場合は、注意が必要。
CakePHPのチュートリアルで気をつけたいこと にある通り、ApacheのRewriteルールの関係で、404エラー(File Not Found)が出て作業がちっとも進まなくなってしまう。
Apacheのhttpd.confのRewriteモジュールの設定は次のようにしている。これは、Zend Frameworkを使うためにしている設定。
これだけだと、CakePHPのチュートリアルをサブディレクトリに配置したケースでは動いてくれない。
httpd.confで、.htaccessをOverrideできるように設定しておく。オプションはちゃんと理解してから書くこと。 適当にやると、適当にやられます。
んで、各CakePHPディレクトリの.htaccessを次のように定義。
これで、動くようになるです。
DocumentRoot直下にCakePHP一式を配置する場合は良いが、/sample/配下のように、サブディレクトリを掘って、その下にCakePHPとスクリプト群を配置する場合は、注意が必要。
CakePHPのチュートリアルで気をつけたいこと にある通り、ApacheのRewriteルールの関係で、404エラー(File Not Found)が出て作業がちっとも進まなくなってしまう。
Apacheのhttpd.confのRewriteモジュールの設定は次のようにしている。これは、Zend Frameworkを使うためにしている設定。
RewriteEngine on RewriteRule !\.(js|ico|gif|jpg|png|css)$ index.php |
これだけだと、CakePHPのチュートリアルをサブディレクトリに配置したケースでは動いてくれない。
httpd.confで、.htaccessをOverrideできるように設定しておく。オプションはちゃんと理解してから書くこと。 適当にやると、適当にやられます。
AllowOverride AuthConfig FileInfo Indexes Limit |
んで、各CakePHPディレクトリの.htaccessを次のように定義。
【/sample/.htaccess】 <IfModule mod_rewrite.c> RewriteEngine on RewriteBase /sample/ RewriteRule ^$ app/webroot/ [L] RewriteRule (.*) app/webroot/$1 [L] </IfModule> |
【/sample/app/.htaccess】 <IfModule mod_rewrite.c> RewriteEngine on RewriteBase /sample/app/ RewriteRule ^$ app/webroot/ [L] RewriteRule (.*) app/webroot/$1 [L] </IfModule> |
【/sample/app/webroot/.htaccess】 <IfModule mod_rewrite.c> RewriteEngine on RewriteBase /sample/app/webroot/ RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ index.php?url=$1 [QSA,L] </IfModule> |
これで、動くようになるです。