無意義なつぶやき

渋谷ではたらくエンジニアブログ。

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が行われているか