CodeIgniter nos permite la utilización de urls amistosas (si, la traducción suena bastante fea).
Dado que por defecto esto no funciona, tenemos que hacer algunos pequeños ajustes.
Lo primero será crear un archivo .htaccess con lo siguiente.
RewriteEngine on
RewriteCond $1 !^(index\.php|images|robots\.txt)
RewriteRule ^(.*)$ /index.php/$1 [L]
A partir de ahora, en lugar de usar:
http://www.dominio.com.ar/index.php/controlador/accion/
Vamos a poder usar:
http://www.dominio.com.ar/index.php/controlador/accion/
Para que la impresión de urls resulte correcta, es necesario hacer un ajuste en el archivo de configuración. Esto aplica en particular si vamos a usar la función site_url del helper Url.
Para evitar que al llamar a la función nos devuelva http://www.dominio.com.ar/index.php, vamos a cambiar la línea 23 de /system/application/config/config.php, y vamos a dejar el valor de la key index_page en blanco.
La configuración debería quedar de ésta forma:
$config['index_page'] = "";
Con estos pequeños ajustes ya deberíamos estar aplicando urls semánticas sin problemas.