La meilleure façon de retirer « index.php » de vos URLs sous CodeIgniter

Publication le 12 septembre 2010 par benoit

Par défaut, CodeIgniter conserve « index.php » dans ses URLs. Vous pourriez vouloir le retirer ; cela rajoute des caractères inutiles dans vos URLs (mauvais pour le référencement, et pour votre santé). Il y a une tentative de résolution de ce problème dans le guide, mais elle ne fonctionne pas pour moi. Voici la meilleure façon de procéder :

1. Ouvrez le fichier .system/application/config/config.php et modifier la variable $config['index_page'] afin qu’elle soit vide comme suit : $config['index_page'] = '';
Une seconde variable est a modifier :
$config['uri_protocol'] = "AUTO";
vers
$config['uri_protocol'] = "REQUEST_URI";

2. Créez un fichier .htaccess que vous placerez à la racine de votre projet :

RewriteEngine On
RewriteBase /nomdurepertoiredanslequeljesuis
RewriteCond %{REQUEST_URI} ^system.*
RewriteRule ^(.*)$ /index.php/$1 [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]

Attention : modifiez la 2è ligne !

Et voilà ! No more URLs du genre http://monsite.com/index.php/controller/methode
mais http://monsite.com/controller/methode

Benoit