Quitar el index.php de la URL en CodeIgniter

Las URLs en CodeIgniter constan de 6 partes. La primera parte es el nombre de nuestro dominio, http://example.com. La segunda parte la pagina index.php. La tercera parte corresponde al controller que se desea llamar. La cuarta, la función dentro del controller. La quinta parte, una variable que se le pasa a dicha función. Por ultimo, la sexta parte, es el valor de la variable anterior.

En el archivo de configuración routes.php definimos el controller por defecto, que sera el que se cargue si no se indica ninguno en la URL. Y todos los controllers deben tener una función index que sera la que se cargue en caso de no pasar ninguna en la URL.

Conociendo esto, vemos que la URL por defecto podría ser de cualquiera de las siguientes maneras:

http://example.com/
http://example.com/index.php/
http://example.com/index.php/welcome/
http://example.com/index.php/welcome/index

Si deseamos quitar el index.php de a URL para dejarla mas limpia aun, debemos editar el archivo de configuración config.php y en el parametro index_page, dejarlo vació:

$config['index_page'] = '';

Una vez echo esto, creamos un archivo nuevo en el raíz de nuestro sitio CodeIgniter, con nombre .htaccess y contenido:

<IfModule mod_rewrite.c>
RewriteEngine on
Rewritebase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?/$1 [L]
RewriteCond %{HTTP_HOST} ^www\.example\.net$ [NC]
RewriteRule ^(.*)$ http://example.net/$1 [R=301,QSA,L]
RewriteCond %{HTTP_HOST} ^h34543545.stratoserver.net$ [NC]
RewriteRule ^(.*)$ http://example.net/$1 [R=301,QSA,L]
</IfModule>
<IfModule !mod_rewrite.c>
ErrorDocument 404 /codeigniter/index.php
</IfModule>

Deberemos cambiar los parámetro RewriteBase y ErrorDocument a la ruta desde el raíz de nuestro servidor. Si por ejemplo tenemos la carpeta codeigniter dentro del raíz de nuestro servidor seria tal como aparece arriba. Si la carpeta codeigniter esta dentro de una subcarpeta proyectos, habría que poner los parámetros como /proyectos/codeigniter y /proyectos/codeigniter/index.php.

 

En concreto mi archivo .htaccess genérico y funcional para mis apps en codeigniter es:

 

Si tenemos acceso a la configuración de Apache, deberemos comprobar si tenemos activada la directiva

A partir de ahora nuestras URLs CodeIgniter seran:

http://example.com/
http://example.com/welcome/
http://example.com/welcome/index

 

Fuente   http://blog.freshware.es/quitar-el-index-php-de-la-url-en-codeigniter/