CakePHPのインストールとRewriteエラー
前回の続きで習うより慣れろの精神でCakePHPのエラーからapacheの理解を進めていこうと思います。
URL rewriting is not properly configured on your server. 1)Help me configure it 2)I don't / can't use URL rewriting
URL rewritingについての説明ですが、ブラウザから要求されたURLと別のURLに飛ばす技術です。関係するコンテキストはhttpd.confと.htaccessです。
URLのリライトを行うには.htaccessをいじる必要があるんですが、その前に.htaccessを動かす許可をhttpd.confで与えてあげないといけないです。具体的に見ていきます。
httpd.conf
LoadModule rewrite_module modules/mod_rewrite.so
httpd.conf or httpd-vhost.conf
<VirtualHost *:80>
DocumentRoot "/Users/cake/app/webroot"
ServerName local.test.jp
<Directory "/Users/cake/app/webroot">
AllowOverride All
</Directory>
</VirtualHost>
.htaccess(Users/cake/app/webroot)
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php [QSA,L]
</IfModule>
流れとしては三段階あって
httpd.confでLoadModule→httpd.confまたはvhostでAllowOverride→.htaccess編集です。
.htaccessを使おうとしていてリライトエラーが出てる場合はこのどこかがおかしい場合が多いです。LoadModuleが#ついたままでコメントアウトされていなかったり、AllowOverrideがNoneになってたりすると.htaccessは使えないのでエラーになります。
別の手としてリライトエラーが出たら1回AllowOverride Noneにして.htaccessを使えないようにすると原因の特定が早いかも。
次は実際に例を挙げつつどうリライトされるか勉強します。
→.htaccessでどのようにRewriteが行われているか