CakePHP インストールのつづき ( mod_rewrite の設定 )

CakePHP を動作させるため、URL の書き換えやリダイレクトを行う Apache モジュール mod_rewrite の設定をします。


mod_rewrite を利用せずに CakePHP を動作させることも可能です。


まずは mod_rewriteApache の起動時にロードされるように設定を編集します。 vi 等のエディタで Apache の設定ファイル /etc/apache2/httpd.conf を開きます。


LoadModule の項目に以下の記述があるか確認します。
無ければ追記します。
# でコメントアウトされていれば # を削除し、コメントを外します。

LoadModule rewrite_module libexec/apache2/mod_rewrite.so

httpd.conf を変更後は apachectl コマンドで Apache を再起動します。


次に mod_rewrite の設定が記述されているCakePHP.htaccess を修正します。
CakePHP では以下の 3 箇所に .htaccess が存在します。

インストールディレクトリは ~/Sites/eclipse_workspace/cake_sample としたので、順にファイルを修正していきます。

~/Sites/eclipse_workspace/cake_sample/.htaccess

RewriteBase を追記します。

<IfModule mod_rewrite.c>
    RewriteEngine    on
    RewriteRule      ^$ app/webroot/ [L]
    RewriteRule      (.*) app/webroot/$1 [L]
</IfModule>

↓↓↓

<IfModule mod_rewrite.c>
    RewriteEngine    on
    RewriteBase      /cake_sample
    RewriteRule      ^$ app/webroot/ [L]
    RewriteRule      (.*) app/webroot/$1 [L]
</IfModule>
~/Sites/eclipse_workspace/cake_sample/app/.htaccess

RewriteBase を追記します。

<IfModule mod_rewrite.c>
    RewriteEngine    on
    RewriteRule      ^$ webroot/ [L]
    RewriteRule      (.*) webroot/$1 [L]
</IfModule>

↓↓↓

<IfModule mod_rewrite.c>
    RewriteEngine    on
    RewriteBase      /cake_sample/app
    RewriteRule      ^$ webroot/ [L]
    RewriteRule      (.*) webroot/$1 [L]
</IfModule>
~/Sites/eclipse_workspace/cake_sample/app/.htaccess

RewriteBase を追記します。

<IfModule mod_rewrite.c>
    RewriteEngine    on
    RewriteCond      %{REQUEST_FILENAME} !-d
    RewriteCond      %{REQUEST_FILENAME} !-f
    RewriteRule      ^(.*)$ index.php?url=$1 [QSA,L]</IfModule>

↓↓↓

<IfModule mod_rewrite.c>
    RewriteEngine    on
    RewriteBase      /cake_sample/app/webroot
    RewriteCond      %{REQUEST_FILENAME} !-d
    RewriteCond      %{REQUEST_FILENAME} !-f
    RewriteRule      ^(.*)$ index.php?url=$1 [QSA,L]
</IfModule>


最後に、CakePHP の tmp ディレクトリのパーミッションを 777 に変更します。
ターミナルから下記のコマンドを入力します。

$ cd /Users/ユーザ名/Sites/eclipse_workspace/cake_blog_tutorial/app
$ chmod -R 777 tmp


完了したら http://localhost/cake_sample へアクセスしてみます。


CakePHP の初期画面が表示され、CSS 等が反映されていれば成功です。