CakePHP インストールのつづき ( mod_rewrite の設定 )
CakePHP を動作させるため、URL の書き換えやリダイレクトを行う Apache モジュール mod_rewrite の設定をします。
※ mod_rewrite を利用せずに CakePHP を動作させることも可能です。
まずは mod_rewrite が Apache の起動時にロードされるように設定を編集します。 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 が存在します。
- CakePHP をインストールしたディレクトリ/.htaccess
- CakePHP をインストールしたディレクトリ/app/.htaccess
- CakePHP をインストールしたディレクトリ/app/webroot/.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 へアクセスしてみます。