Codeigniter permite reescribir URLS a tu gusto, para lo cual dispone de un archivo de configuración para en-rutar las URLs, ubicado en /system/application/config/routes.php (para versiones 2.0.3 en adelante la ruta es /application/config/routes.php )
Si lo editas, verás que tiene dos que son rutas reservadas:
$route[‘default_controller’] = “welcome”;
$route[‘scaffolding_trigger’] = “”;
$route[‘scaffolding_trigger’] = “”;
Pero también puedes definir tus propias rutas:
para lo cual se utiliza un array de PHP denominado $route; generalmente la clave es el PATRÓN a matchear y el valor del array es la URL real a enrutar…
Veamos:
- $route['seccion-bogs/blog-de-diego'] = "blogs/users/34";
En este caso si tu sitio es example.com, la dirección URL :
http://example.com/seccion-bogs/blog-de-diego se enrutara a http://example.com/blogs/users/34 internamente. tambien puedes usar wildcards :num :any asi:
- $route['seccion-bogs/blog-de-(:any)'] = "blogs/users/$1";
Hace lo mismo que antes salvo que se enrutará el nombre como clave …
http://example.com/seccion-bogs/blog-de-juanperez12 se enrutará a http://example.com/blogs/users/juanperez12
Y también puedes utilizar expresiones regulares (REGEX) :
- $route['products/([a-z]+)/(\d+)'] = "$1/id_$2";
Con la siguiente definición una URL como http://example.com/products/herramientas/34 se re-escribiría a http://example.com/herramientas/id_34
puedes utilizar combinado REGEX y WILDCARDS:
- $route['products/([a-z]+)/(:any)'] = "$1/id_$2";
El efecto es el mismo.
Un enrutamiento que me sirvió en mi sitio:
- $route['central-de-compras/[0-9a-zA-Z-\-\.]+/(:any)'] = "es/c/search/$1";
Entonces esta dirección central-de-compras/empresa-castilla.html/132125454 se enruta como es/c/search/132125454
Notar que no he tocado en absoluto el .htaccess , todo el enrutamiento es interno de CodeIgniter.
Si querés la info oficial del tema en el tutorial de codeigniter ingresa en http://codeigniter.com/user_guide/general/routing.html