apache使用時、cakePHP2系をサブディレクトリで使いたいときの運用法に関して。通所通りですとファイルにアクセスできないので、URLのリライトをうまくしないといけません。下記に設定例をかきますが、RewriteBase以外は一緒です。
下記のようなケースを想定します。
URL http://sample.com/hoge/
ディレクトリ /var/www/html/hoge/app/
以前nginxでの使用法については下記に書きました。
nginxインストール(サブディレクトリでcakePHPを使いたいとき)
nginxの場合は設定ファイルにリダイレクトを書きますが、apacheの場合、htaccessに書くことが一般的です。
hoge直下の.htaccess
1 2 3 4 5 6 |
<IfModule mod_rewrite.c> RewriteEngine on RewriteRule ^$ app/webroot/ [L] RewriteRule (.*) app/webroot/$1 [L] RewriteBase /hoge (←ちなみにサブディレクトリでない場合はここを書く必要がありません。) </IfModule> |
RewritBaseは読んで字のごとく変更のベースになる部分です。通常はドメインの次ぐ下が書き換え対象になりますが、サブディレクトリの場合は、/hogeが追加されるのでこれをRewriteBaseとして書かなくてはいけません。ここをかかないとRewriteRuleにhogeごとかかなくてはいけません。
1 2 3 4 5 6 |
<IfModule mod_rewrite.c> RewriteEngine on RewriteRule ^$ webroot/ [L] RewriteRule (.*) webroot/$1 [L] RewriteBase /hoge/app (←サブディレクトリ以外では書く必要はありません。) </IfModule> |
webroot直下の.htaccess
1 2 3 4 5 6 7 |
<IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ index.php [QSA,L] ^ index.php[L](←サブディレクトリ以外では下記のようにかきます。) RewriteBase /hoge/app/webroot(←サブディレクトリ以外は書く必要はありません。) </IfModule> |
参考リンク