CodeIgniter – Quitar index.php de la url

Para poder trabajar bien las url amigables en CodeIgniter, debemos quitar el index.php que sale por defecto cuando navegas por la aplicación. Empecemos con el artículo CodeIgniter – Quitar index.php de la url

Para ello, debemos modificar dos ficheros:

Cuando navegamos por nuestra aplicación creada con CodeIgniter, podemos observar que la url contiene el index.php

www.midominio.com/index.php/contactar

Cuando lo que queremos es una url así (sin el index.php):

www.midominio.com/contactar

Para ello debemos modificar dos ficheros:

.htaccess

Hay que añadir las siguientes linias al fichero .htaccess que hay en la raiz de la aplicación:

<IfModule mod_rewrite.c>
  ...
  RewriteEngine On
  RewriteBase /

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

Vigilad que alguna de las linias puede ser que ya las tengáis. Y debéis tener en cuenta que modificar el .htaccess puede hacer que la web deje de funcionar.

application/config/config.php

Hay que quitar el index.php de la variable index-page. Por defecto está así:

$config['index_page'] = 'index.php';

Y debe quedar así:

$config['index_page'] = '';

En algunas ocasiones no funciona

En algunas ocasiones, los pasos anteriores no funcionan, por lo que tendremos que cambiar del config.php lo siguiente:

$config['uri_protocol'] ="AUTO"

por

$config['uri_protocol'] = "REQUEST_URI"

Si aún así no funciona, en algunos servidores necesitaremos cambiar la última línia que hemos pueto en el .htacces

RewriteRule ^(.*)$ index.php/$1 [L]

por

RewriteRule ^(.*)$ index.php?/$1 [L,QSA]

Con estas dos modificaciones, ya deberías poder navegar por tu aplicación sin el index.php

Espero que os sea de utilidad el artículo CodeIgniter – Quitar index.php de la url


Algunos enlaces que os pueden ayudar: