Quitar el index.php de la URL en CodeIgniter

Buenos días, lechugas!

http://example.com/index.php/class/function/ID/Value

Las URLs en CodeIgniter constan de 6 partes. La primera parte es el nombre de nuestro dominio, http://example.com. La segunda parte la pagina index.php. La tercera parte corresponde al controller que se desea llamar. La cuarta, la función dentro del controller. La quinta parte, una variable que se le pasa a dicha función. Por ultimo, la sexta parte, es el valor de la variable anterior.

En el archivo de configuración routes.php definimos el controller por defecto, que sera el que se cargue si no se indica ninguno en la URL. Y todos los controllers deben tener una función index que sera la que se cargue en caso de no pasar ninguna en la URL.

Conociendo esto, vemos que la URL por defecto podría ser de cualquiera de las siguientes maneras:

http://example.com/
http://example.com/index.php/
http://example.com/index.php/welcome/
http://example.com/index.php/welcome/index

Si deseamos quitar el index.php de a URL para dejarla mas limpia aun, debemos editar el archivo de configuración config.php y en el parametro index_page, dejarlo vació:

$config['index_page'] = '';

Una vez echo esto, creamos un archivo nuevo en el raíz de nuestro sitio CodeIgniter, con nombre .htaccess y contenido:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /codeigniter
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
</IfModule>
<IfModule !mod_rewrite.c>
ErrorDocument 404 /codeigniter/index.php
</IfModule>

Deberemos cambiar los parámetro RewriteBase y ErrorDocument a la ruta desde el raíz de nuestro servidor. Si por ejemplo tenemos la carpeta codeigniter dentro del raíz de nuestro servidor seria tal como aparece arriba. Si la carpeta codeigniter esta dentro de una subcarpeta proyectos, habría que poner los parámetros como /proyectos/codeigniter y /proyectos/codeigniter/index.php.

Una vez echo esto, deberemos asegurarnos de que el modulo rewrite del servidor Apache esta cargado, y que en la configuración del sitio (archivo /etc/apache2/sites-enabled/000-default por defecto) tenemos el parámetro AllowOverride a all para nuestra ruta raiz del servidor.

A partir de ahora nuestras URLs CodeIgniter seran:

http://example.com/
http://example.com/welcome/
http://example.com/welcome/index

 

Y recordad que si quereis contar con nosotros para realizar vuestra página web podeis poneros en contacto con nosotros en:

www.freshware.es

26 comentarios en “Quitar el index.php de la URL en CodeIgniter

Deja un comentario