2009-11-02

URL amigable con mod_rewrite y el FrameWork CodeIgniter

La técnica utilizada por CodeIgniter para mostrar las URLs de nuestras páginas web es la llamada de aproximación por segmentos. Es decir, cuando carguemos en nuestro navegador una página web desarrollada por CodeIgniter, ésta será de la siguiente forma:

1.http://nuestroSitio/clase/funcion/identificador
  • clase representa la clase Controlador que ha sido invocada.
  • funcion representa la función invocada de la clase Controlador anterior.
  • identificador representa cualquier variable pasada como parámetro a la función de la clase Controlador anterior.

Por defecto, el fichero index.php será incluido en las URLs de nuestra página web como se muestra:

1.http://nuestroSitio/index.php/clase/funcion/identificador

Para evitar esta incomodidad estética podemos editar el fichero .htaccess de la siguiente forma:

#Inicio del archivo .htaccess
RewriteEngine On
RewriteBase /CI/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond $1 !^(index\.php|images|robots\.txt)
RewriteRule ^(.*)$ index.php/$1 [L]

# Si no esta disponible el modulo mod_rewrite hay que instalarlo, 404's
# hasta que no este disponible, dara el error 404 carga la pagina index.php.
# La pagina que carge tiene que ser configurada a tu nesesida y configuracion.

ErrorDocument 404 /CI/index.php

#Fin del archivo .htaccess

De esta forma, cualquier petición HTTP diferente al fichero index.php , images y robots.txt será tratado como una petición para el fichero index.php.

No hay comentarios: