I'm attending CakeFest 2010!

10.1.5 mod_rewriteについて

新しいユーザはmod_rewriteでつまずくことがよくあるので、少しだけ説明をしておきます。もし、CakePHPのwelcomeページが少しおかしい(画像が表示されず、cssのスタイルが適用されていない)なら、おそらく、システム上のmod_rewriteが機能していないということです。動作させるための幾つかのヒントを掲載しておきます。

  1. httpd.confの中で、.htaccessのoverrideが許可されているか、確かめてください。各ディレクトリごとの設定を定義できる部分があります。該当するディレクトリのAllowOverrideAllになっていることを確認してください。

  2. user-やサイト固有のhttpd.confではなく、正しいhttpd.confを編集していることを確認しましょう。

  3. 何かしらの理由で、.htaccessファイルが含まれていないCakePHPのファイルを入手した可能性もあります。これは、'.'ではじまるファイルを隠し属性のものとして扱い、それらをコピーしないオペレーティングシステムがあるためです。CakePHPを本家サイトのダウンロードセクションか、SVNリポジトリからダウンロードしてください。

  4. Apacheが、mod_rewriteを正しく読み込んでいることを確認しましょう。httpd.confの中に、LoadModule rewrite_module libexec/httpd/mod_rewrite.so、そしてAddModule mod_rewrite.cというような部分があるはずです。

サーバでmod_rewrite(や、その他の互換モジュール)を使いたくない、または使えないという場合には、Cakeに組み込まれている pretty URLsを使う必要があります。/app/config/core.phpの中の次の箇所のコメントを外してください。

Configure::write('App.baseUrl', env('SCRIPT_NAME'));
  1. Configure::write('App.baseUrl', env('SCRIPT_NAME'));

また以下の .htaccess ファイルを削除してください:

		/.htaccess
		/app/.htaccess
		/app/webroot/.htaccess
		
  1. /.htaccess
  2. /app/.htaccess
  3. /app/webroot/.htaccess

そうすると、URLは、 www.example.com/controllername/actionname/paramではなく、www.example.com/index.php/controllername/actionname/paramという仕方でアクセスできるようになります。