CodeIgniterでmod_rewriteを使う時の注意
CodeIgniterのデフォルトで生成されるURLは下記の通り。
example.com/index.php/news/article/my_article
「mode_rewrite」を使えばindex.php
をURLから除去できます。
example.com/news/article/my_article
この設定方法と注意点をメモしておきます。
環境
- CodeIgniter 2.1.4
- XAMPP 1.8.3 (mod_rewrite有効)
1. ".htaccess"を作成する
下記を参考に.htaccess
を作成してCodeIgniterのフォルダの最上位、index.php
と同階層に設置します。
./.htaccess
<IfModule mod_rewrite.c> RewriteEngine on RewriteCond $1 !^(index\.php|images|robots\.txt) RewriteRule ^(.*)$ index.php/$1 [L] </IfModule>
【注意点】
ユーザガイドそのままの記述ではうまく動作しなかったので一部変更しています。
変更箇所は下記のとおりです。
- RewriteRule ^(.*)$ /index.php/$1 [L] + RewriteRule ^(.*)$ index.php/$1 [L]
"index.php"の前のスラッシュをひとつとっただけです。
CakePHPの".htaccess"ではこう記述されていました。
2. config.phpの"$config['index_page']"を変更する
ユーザガイドには書かれていませんでしたが、これも必要な設定です。
そうしないとURLヘルパーなどで自動生成されるURLに"index.php"が入ってしまいます。
./application/config/config.php
<?php // 初期値の'index.php'から空白に変更する。 $config['index_page'] = '';