Las URLs de CodeIgniter

De forma predeterminada, las URL en CodeIgniter están diseñadas para ser motor de búsqueda y también amigables para el ser humano.

En lugar de utilizar el enfoque estándar de "query string" para las URL que es sinónimo de sistemas dinámicos, CodeIgniter utiliza un enfoque basado en segmentos:

ejemplo.com/noticias/articulo/mi_articulo

Nota

Las URL tipo "query string" pueden habilitarse opcionalmente, como se describe más adelante

Segmentos de URI

Siguiendo el enfoque Modelo-Vista-Controlador, los segmentos en la URL normalmente se presentan:

ejemplo.com/clase/método/ID
  1. El primer segmento representa la clase de controlador que debe invocarse: ejemplo.com/clase/método/ID
  2. El segundo segmento representa el método o función, que debería llamarse: ejemplo.com/clase/método/ID
  3. El tercero y cualquier segmento adicional representan cualquier variable que se pasará al controlador: ejemplo.com/clase/método/ID

La librería de URI y el ayudante URL Helper contienen funciones que facilitan el trabajo con los datos de URI, además, sus URL se pueden reasignar utilizando la función de enrutamiento URI Routing para obtener más flexibilidad.

Eliminar el archivo index.php

De forma predeterminada, el archivo index.php se incluirá en tus URL:

ejemplo.com/index.php/noticias/articulo/mi_articulo

Si tu servidor Apache tiene habilitado mod_rewrite, puedes eliminar fácilmente este archivo utilizando un archivo .htaccess con algunas reglas simples.

Aquí hay un ejemplo de dicho archivo, utilizando el método "negativo" en el que todo se redirige excepto los elementos especificados:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]

En el ejemplo anterior, cualquier solicitud HTTP que no sea la de directorios existentes y archivos existentes se trata como una solicitud para tu archivo index.php.

Nota

Estas reglas específicas pueden no funcionar en todas las configuraciones de servidor.

Asegúrate de excluir también de la regla anterior cualquier recurso que puedas necesitar para que sea accesible desde el mundo exterior.

Agregar un sufijo a la URL

En el archivo config/config.php puedes especificar un sufijo que se agregará a todas las URL generadas por CodeIgniter.

Por ejemplo, si tienes esta URL:

ejemplo.com/index.php/productos/ver/zapatos

Opcionalmente, puedes agregar un sufijo, como .html, haciendo que la página parezca ser de cierto tipo:

ejemplo.com/index.php/productos/ver/zapatos.html 

Habilitar la Query string

En algunos casos, es posible que prefieras utilizar las URL con cadena de consulta (Query string):

index.php?c=productos&m=ver&id=345

CodeIgniter admite opcionalmente esta capacidad, que se puede habilitar en el archivo application/config/config.php, si abres tu archivo de configuración, verás estos elementos:

$config['enable_query_strings'] = FALSE;
$config['controller_trigger'] = 'c';
$config['function_trigger'] = 'm';

Si cambias "enable_query_strings" a TRUE, esta característica se activará, se podrá acceder a sus controladores y funciones utilizando el "trigger" que hayas configurado para invocar tus controladores y métodos:

index.php?c=controlador&m=método 

Nota

Si estás utilizando una cadena de consulta, (Query string ), tendrás que crear tus propias URL, en lugar de utilizar los ayudantes de URL, y otros ayudantes que generan URL, como algunos de formularios, ya que están diseñados para trabajar con URL basadas en segmentos.