さくらのレンタルサーバでの CodeIgniter の .htaccess 設定

URI から index.php を消す方法です。

これでいいのではないでしょうか?というか、さくらの実サーバがないのでテストしてません。(^^;

.htaccess を以下のように設定します。

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?__PATH_INFO__=$1 [L,QSA]

RewriteCond は、必要に応じて変更してください。

次に、CodeIgniter 本体を変更せずに対応するため Config クラスを拡張します。

CodeIgniter 1.7 では

system/application/libraries/MY_Config.php

CodeIgniter 2.0 では

application/core/MY_Config.php

に以下のソースを記載します。

<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class MY_Config extends CI_Config {
	function __construct()
	{
		parent::__construct();

		if (isset($_GET['__PATH_INFO__']))
		{
			$_SERVER['PATH_INFO'] = $_GET['__PATH_INFO__'];
			unset($_GET['__PATH_INFO__']);
			$this->set_item('uri_protocol', 'PATH_INFO');
		}
	}
}