3ENGINE

Programación y otros cachivaches

Etiqueta: codeigniter

Tecnologia

funcionando Codeigniter: escribiendo httpd.conf para el ISAPI_Rewrite lite


Hay que escribir el script para que ISAPI_Rewrite traduzca la URI.

aquí una ayuda mas extensa que la proporcionada por el programita.

mas ayuda: aqui

Un posible script es este (el que recomienda CodeIgniter):

RewriteEngine On
RewriteCond %{REQUEST_URI} !^(/index\.php/img/js/css/robots\.txt/favicon\.ico)
RewriteRule ^(.*)$ /index.php/$1 [L]

En mi caso hice una pequeña modificación ya que tenia instalado la Web en un path virtual,
es decir que para acceder a la página «productos» se hace mediante:

http://localhost/cigniter/index.php/productos

El script quedaria así:

RewriteEngine On
RewriteCond %{REQUEST_URI} !^(/index\.php/img/js/css/robots\.txt/favicon\.ico)
RewriteRule ^(.*)$ cigniter/index.php/$1 [L]

Ahora para acceder a la página escribimos:

http://localhost/productos

Ojo, esto no seria correcto:

http://localhost/cigniter/productos

Ya que el script mediante el parámetro $1 pasa toda la ruta completa y entonces no funcionaria, ya que traduciria la anterior URI por esta:

http://localhost/cigniter/index.php/cigniter/productos

Ojo al parche con esta línea:

RewriteCond %{REQUEST_URI} !^(/index\.php/img/js/css/robots\.txt/favicon\.ico)

Indica que por ejemplo las siguientes URI nos las procese (es decir no las traduzca):

http://localhost/img/micasa.jpg
http://localhost/css/micss.css
etc..

por lo que es posible que nos interesa modificarla para adpatarla a nuestras necesidades.




Tecnologia

CodeIgniter necesita de .htaccess pero en IIS no existe.


CodeIgniter utiliza lo que se llaman friendly paths. Por ejemplo si tenemos esta URI:

htpp://localhost/index.php?p=download&file;=miprograma

con este framework podriamos traducirlo a una cosa así y funcionaria:

http://localhost/download/file/miprograma

donde download es el controlador a cargar (recordar que Codeigniter utiliza la arquitectura MVC) file es la función a llamar de ese controlador y miprograma es un parámetro de dicha función.

Esto es muy bonito y limpio 🙂

Pero para eliminar de la URI index.php se necesita configurar un .htaccess y aqui vienen los problemas. Si utilizas IIS estos ficheros de configuración no existen ya que son propios de Apache.

En la Web de CodeIgniter viene como configurar esto para Apache

Buscando buscando he encontrado una solución para IIS que se llama ISAPI REWRITER, aqui los links:

artículo con ejemplos
descargas

Este programita está pensado para resolver resolver la URI para que los boots de buscadores como Google «acepten» de buen agrado tu página, redireccionar URI’s, para realizar balanceos de carga, etc, etc…. ( aquí puedes encontrar una explicación más detallada de las posibilidades) y para nuestro problemilla tambien nos servirá.

Es de pago, pero tiene una versión lite para 64 bits y otras para 32 bits que creo que ya servirá. Ya que la idea es utilizarlo sólo en mi entorno de desarrollo. Cuando suba el proyecto a mi hosting ya no habrá problema porque es un LAMP y lo único que necesitaré es subir el susodicho .htaccess.

Tambien anda por ahí otro programita Open Source que hace lo mismo, pero escrito por y para .NET, pero no lo he probado. El link aquí. Parece ser que tambien tienen una versión en Java.