CodeIgniter – URL amigable con guión
| Posted in General | Posted on 09-08-2010
2
Codeigniter, así como muchos otros frameworks están basados en MVC, y los controladores al ser clases de POO, sus nombres y métodos no pueden llevar guión “-”
Así pues una URL típica del método MVC sería:
dominio.com/controlador/método/dato1/dato2 …
Pero qué sucede si quiero URLs más amigables para los motores de búsqueda, para el dichoso SEO ;-) algo como:
dominio.com/controlador-principal/
Pues no podría de buenas a primeras jugando con el nombre del controlador, es por ello que recurrimos a la manipulación del enrutado (routing) el cual encontramos en el archivo routes.php
$route['(.+)-(.+)-(.+)-(.+)-(.+)'] = “$1_$2_$3_$4_$5″; $route['(.+)-(.+)-(.+)-(.+)'] = “$1_$2_$3_$4″; $route['(.+)-(.+)-(.+)'] = “$1_$2_$3″; $route['(.+)-(.+)'] = “$1_$2″;
Así soporta URLs con guiones de hasta 5 segmentos, por ejemplo, si tenemos nuestra dirección “dominio.com/analisis-precio-unitario”, estas líneas reescribirán y llamará a la clase “dominio.com/analisis_precio_unitario”.
Si necesitas más segmentos, solamente ve añadiendo más líneas siguiendo el mismo patrón.
Gracias a http://www.wakamolee.com/ por el dato !




Saludos Alexander, tengo una duda que vino a mi mente cuando lei este articulo. Supón que deseo hacer una aplicación web que maneja perfiles al estilo Twitter, es decir http://www.dominio.com/usuario.
Cual seria la mejor implementación si estoy usando codeigniter para lograr esto? Entiendo que si manejo un controlador primario y recibo el “usuario” como parametro funcionaria, pero hay otra manera?
Gracias y excelente blog.
Saludos,
Resolví agregando un enrutado en el archivo routes.php que esta en la carpeta config:
$route['(\d+)/[a-z-A-Z1-9_]+’] = ‘controller/method/$1
Y en el controlador manejo lo pasado por url haciendo la logica necesaria en cada caso :)