CodeIgniterでURLからindex.phpを除去する

CodeIgniterでURLからindex.phpを除去する方法

PHPのフレームワークCodeIgniterを利用した場合、初期状態ではURLアクセス時に「index.php」を含む必要があります。

example.com/index.php/news/article/my_article

除外ルールを記述した「.htaccess」ファイルを配置することで、この「index.php」を省略してアクセスすることができます。

.htaccess記述例

index.phpを除外するには、以下のような記述をした「.htaccess」ファイルを配置します。

RewriteEngine on
RewriteCond $1 !^(index\.php|images|robots\.txt)
RewriteRule ^(.*)$ /index.php/$1 [L]

この例では、index.php、images、および robots.txt 以外のあらゆるHTTPリクエストを、index.php ファイルへのリクエストとして取り扱います。

index.phpがルートディレクトリ直下ではない場合

なお、アクセス先のURLがサーバーのルートディレクトリ直下ではない場合もあるかと思います。

example.com/hogehoge/index.php/news/article/my_article

このような場合は「.htaccess」ファイルのRewriteRule部分に対象ディレクトリを記述することで対応可能となります。

RewriteEngine on
RewriteCond $1 !^(index\.php|images|robots\.txt)
RewriteRule ^(.*)$ /hogehoge/index.php/$1 [L]

参考

CodeIgniter の URL : CodeIgniter ユーザガイド 日本語版