URLs en CodeIgniter

  • Por
  • PHP
Detalles sobre las URLs que genera CodeIgniter para las páginas de las aplicaciones, que siempre son amigables a buscadores.
Uno de los puntos que debemos conocer antes de empezar a trabajar con CodeIgniter es sobre cómo son las direcciones URL que utiliza este popular framework PHP para cada una de las páginas de las aplicaciones PHP que creemos utilizándolo. La verdad es que es un punto que realmente resulta transparente para nosotros, puesto que las URL se generan automáticamente a medida que vamos programando el sitio web, pero está bien comentar algunas cosas importantes.

Éste es un artículo del Manual de CodeIgniter que estamos publicando en DesarrolloWeb.com, por lo que para entenderlo habrá que leer alguno de los artículos previos a éste.

URLs amigables a buscadores

Uno de los puntos fuertes de este framework PHP es que las URL se presentan siempre en un formato amigable a los buscadores. Esto quiere decir que cualquier motor de búsqueda puntuará positivamente, a priori, las direcciones de las páginas. Del mismo modo, las direcciones tendrán una forma fácil de entender y recordar por los seres humanos.

En DesarrolloWeb.com, en los manuales de posicionamiento y promoción en buscadores hemos hablado repetidas veces acerca de las URL amigables, pero para el que no lo sepa, estas son URL que no suelen ser puntuadas bien por los buscadores:

www.midominio.com/articulos.php?id=32
www.midominio.com/articulos.php?nombre=miarticulo

Si lo vemos, tenemos una página, articulos.php, que se le pasan distintos parámetros. Pero los buscadores muchas veces interpretan que es la misma página. Bueno, en realidad no tiene más importancia, porque con CodeIgniter las URL tienen mucha mejor arquitectura, con formas como estas:

www.midominio.com/articulos/muestra/32
www.midominio.com/controlador/funcion/parametro

Las diferencias saltan a la vista, tanto para nosotros humanos como para motores de búsqueda como Google. Y lo bueno es que nosotros no tenemos que hacer nada para conseguir este tipo de direcciones.

Nota: Hay un pequeño matiz que comentaremos más tarde en este artículo y es que en principio todas las URL en CodeIgniter tienen el nombre de una página llamada index.php, pero esto es algo que podemos hacer desaparecer si sabemos configurar el framework.

Query String desactivado

En CodeIgniter en principio está desactivada la posibilidad de envío de variables a través de la URL, lo que se conoce en inglés como Query String. Es decir, que direcciones en las que se envían variables a través de las URL, que decíamos que eran poco amigables a buscadores, no funcionarán.

Si se desea, se puede hacer que CodeIgniter reconozca las variables enviadas por la URL, pero como en principio el sistema de URLs amigables a buscadores que implementa el framework está pensado para poder evitar el problemático Query String, su uso está desactivado.

Segmentos de la URL y el modelo - vista - controlador

Cada una de las partes de la URL de las aplicaciones creadas con el framework sirve para identificar qué controlador, del ya explicado Modelo - Vista - Controlador de CodeIgniter, se va a hacer cargo del procesamiento de la página, así como de la función que se invocará y los parámetros que se le enviarán a la misma. Por ejemplo:

aplicacioncodeiginter.com/facturacion/editarempresa/5610

  • aplicacioncodeiginter.com es el nombre del supuesto dominio donde tenemos CodeIgniter instalado.
  • facturacion es el nombre del controlador que se encargará de procesar la solicitud.
  • editarempresa es el nombre de la función que habrá dentro del controlador y donde estará el código que ejecute y genere la página. Aunque para ser correctos, como el controlador está en programación orientada a objetos, en vez de función, deberíamos llamarle método.
  • Por último, 5610, es el parámetro que se le pasa a la función editarempresa, que servirá en este caso para que editarempresa sepa cuál es la empresa que se desea editar. Si queremos o necesitamos enviar varios parámetros a esta función, y no sólo el identificador de la empresa a editar, podremos colocarlos a continuación, separados por barras.
Nota: Esto quizás resulte ahora un poco complicado, porque todavía no tenemos una idea definida sobre cómo son los controladores, pero dentro de poco lo veréis todo más claro.
CodeIgniter pone a nuestra disposición una clase para trabajar con URLs llamada URI Class y una librería llamada URL Helper que contienen funciones para trabajar fácilmente con URLs y datos enviados en las mismas. En estas librerías hay funciones tan interesantes como site_url() que sirve para que el propio CodeIgniter cree una URL dentro del sitio a partir de un parámetro que le pasemos. Otro ejemplo es base_url(), que simplemente devuelve la URL raíz donde está nuestra aplicación CodeIgniter.

Todo pasa por index.php

En CodeIgniter existe un index.php que está en la raíz del framework que se encarga de las funciones de enrutamiento hacia el controlador que se debe encargar de procesar la solicitud. Por ello, de manera predeterminada en CodeIgniter veremos que las URLs incluyen el nombre del archivo index.php. Este comportamiento se puede configurar.

En el próximo artículo explicaremos cómo eliminar este index.php en las URLs de CodeIgniter, algo que simplificará las direcciones.

Añadir un sufijo a las URL

Otro de los detalles que podemos hacer con CodeIgniter, que pueden personalizar aun más nuestras direcciones URL, es añadir un sufijo, que nosotros deseemos, al final de todas las URL que formen parte del framework. Por ejemplo, podríamos desear que todas las URL acaben en .html o en .php, o como queramos. Esto se puede hacer a través de los archivos de configuración del framework.

La idea es que una URL como esta:

http://dom.com/index.php/blog/post/cualquier-articulo

Pase a ser una dirección como esta otra:

http://dom.com/index.php/blog/post/cualquier-articulo.html

Para esto editamos el archivo de configuraciones generales: system/application/config/config.php y tenemos que buscar la variable url_suffix y colocar el valor que deseemos, por ejemplo:

$config['url_suffix'] = ".html";

Autor

Miguel Angel Alvarez

Miguel es fundador de DesarrolloWeb.com y la plataforma de formación online EscuelaIT. Comenzó en el mundo del desarrollo web en el año 1997, transformando su hobby en su trabajo.

Compartir

Comentarios

Distriker

19/3/2010
Interesante
Interesante tema este de las URLs. Se puede hacer muchas cosas con solo unas cuantas letras de código, me gusta.

Saludos

vizonte

21/3/2010
Muy bueno
Felicitaciones, muy interesante este material de Igniter.
Sigab así.
Saludos

César Antonio

28/4/2011
Excelente Articulo
Estoy con la intención de aprender codeigniter y este tutorial esta bastante entendible y de fácil lectura, felicidades a los creadores de desarrollo web.

Saludos desde la Cd México

PhiRequiem

24/7/2012
¿sufijo URL ayuda?
Hi Miguel, excelente Manual d(^_^o)
una duda, ¿recomiendas el uso de sufijos en las URL?
¿realmente sirve al seo?

rodrigo

06/2/2016
URL AMIGABLE
Hola muy buen tutorial, pero tengo un problema.
por ejemplo tengo este sitio web
http://*****.com/articulo/contenido/144
y quiero que muestre url amigable algo como esto
http://*****.com/articulo/contenido/titulo-del-articulo.html
con el .html no hay ningún problema pero para cambiar la id del articulo que es 144 a el titulo del articulo estoy intentando creandol con url_title();
pero no pasa nada no me cambia la url y si le realizo un echo me imprime en pantalla. Tú por casualidad sabes cual es el problema.