以下のコードを使用して、URL から index.php を削除できます。
RewriteEngine on
RewriteCond $1 !^(index\.php|images|robots\.txt)
RewriteRule ^(.*)$ /index.php/$1 [L]
ただし、URL をさらに短縮するには、codeIgniter によるルート リマップ機能を訴える必要があります。これについては、codeigntier ユーザー ガイドの URL ルーティングの下に明確に記載されています。
ルーティング ルールは、application/config/routes.php ファイルで定義されます。その中に、独自のルーティング基準を指定できる $route という配列があります。ルートは、ワイルドカードまたは正規表現を使用して指定できます
Wildcards
典型的なワイルドカード ルートは次のようになります。
$route['product/:num'] = "catalog/product_lookup";
ルートでは、配列キーには一致する URI が含まれ、配列値には再ルーティング先の宛先が含まれます。上記の例では、URL の最初のセグメントに「product」というリテラル ワードがあり、2 番目のセグメントに数字がある場合は、代わりに「catalog」クラスと「product_lookup」メソッドが使用されます。
リテラル値を照合するか、次の 2 つのワイルドカード タイプを使用できます。
(:num) は、数字のみを含むセグメントに一致します。(:any) は、任意の文字を含むセグメントに一致します。
注: ルートは、定義された順序で実行されます。上位のルートは常に下位のルートよりも優先されます。例
いくつかのルーティングの例を次に示します。
$route['journals'] = "blogs";
最初のセグメントに「journals」という単語を含む URL は、「blogs」クラスに再マッピングされます。
$route['blog/joe'] = "blogs/users/34";
blog/joe セグメントを含む URL は、"blogs" クラスと "users" メソッドに再マッピングされます。IDは「34」に設定されます。
$route['product/(:any)'] = "catalog/product_lookup";
最初のセグメントが「product」で、2 番目のセグメントが「catalog」クラスと「product_lookup」メソッドに再マッピングされる URL。
$route['product/(:num)'] = "catalog/product_lookup_by_id/$1";
最初のセグメントが「product」で、2 番目のセグメントが数字の URL は、「catalog」クラスに再マッピングされ、「product_lookup_by_id」メソッドは一致を変数として関数に渡します。