URL amigables con Yii Framework (friendly’s url)

Ya habiendo hecho varias pruebas con Yii Framework, el framework de php que estoy utilizando para el desarrollo de aplicaciones, apareció el tema de las url amigables, por lo que me dispuse a buscar algo acerca del tema.. pocos minutos después de preguntarle a los buscadores llegué de manera inmediata a un tutorial desde la misma página de Yii, donde indican como hacer que los parametros enviados por la url se conviertan en url más claras y hasta entendibles por los humanos.. pues bueno, todo funciono como lo esperaba en windows (wampserver), pero en linux no me fue tan bien ya que tuve algunos problemas, los cuales trataré de describir y explicar sus soluciones.

Básicamente el tutorial dice que Yii de manera predeterminada crea enlaces de la siguiente manera:

/index.php?r=controlador/vista¶metro=100

Pero que estos se pueden mejorar seteando las propiedades del componente urlManager, a lo cual los enlaces quedarían asi:

/index.php/controlador/vista/parametro/100

OK.. hasta aqui vamos bien y segun el tutorial todo funcionó sin problemas.. pero lo que sigue se vuelve más interesante ya que yo no quería que se viera la página index.php, entonces continuando con el tutorial dicen que podemos reescribir algunas reglas de la consulta por URL.. seteando nuevamente parametros del urlManager, esta propiedad específicamente es “showScriptName=false”, que por omisión esta en true y esto se supone debería esconder la página index.php y para que funcione también es necesario escribir también en el .htaccess lo siguiente:

Options +FollowSymLinks
IndexIgnore *
RewriteEngine on
 
# if a directory or a file exists, use it directly
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
 
# otherwise forward it to index.php
RewriteRule . index.php

Y hasta aqui.. o al menos en windows con wamp server, funcionó sin problemas.. las url se volvieron mucho más accesibles, pero al migrar la aplicación a linux algo malo sucedió y no estaban funcionando las url amistosas, de hecho el .htaccess no se estaba leyendo por lo que segun la experiencia recorde que me hacía falta modificar algo al apache..

La Solución..

1.- En linux, específicamente apache2 por omisión no permite los .htaccess personalizados por lo que es necesario modificar el archivo de /etc/apache2/sites-available/default hay que ubicar la línea AllowOverride que inicialmente trae el valor none.

<Directory /var/www/>
  Options Indexes FollowSymLinks MultiViews
  AllowOverride All
  Order allow,deny
  allow from all
</Directory>

Y con esto ya permitimos el uso del .htaccess personalizados..

2. Los errores continuaron persistiendo, mi archivo .htaccess modificaba algunas reglas del servidor y el módulo requerido no estaba activo.. entonces habría que activarlo, esto desde la línea de comandos..

$ sudo a2enmod rewrite
$ sudo /etc/init.d/apache2 restart

Y con esto las reglas del .htaccess que inician con RewriteRule ya se pueden utilizar, genial al hacer el intento nuevamente en mi navegador y ver si la aplicación ya aceptaba los url amigables.. voilá.. funcionaron..

El componente urlManager de Yii Framework permite modificar o reescribir la manera en que los enlaces son entregados al navegador, realmente es un tema muy útil para quienes se preocupan mucho por el tema de SEO (Seach Engine Optimizer), este post es básicamente un How-to de como hacer funcionar esta practica en servidores basados en linux y el componente puede lograr más de lo que he escrito.

Tutorial completo de como implementar Friendlys URL’s con Yii Framework

http://www.yiiframework.com/doc/guide/topics.url

Co-fundador de Qbit Mexhico, usuario de linux, Developer en tecnologías web.. Nicaragüense, centro en basketball, primer centro en rugby y pintor los fines de semana. Ortögrafo y ambientalista psicológico (de escritorio).. ese soy yo!

Si te ha servido compártelo y difunde nuestro blog..

Twitter LinkedIn Flickr YouTube 

One thought on “URL amigables con Yii Framework (friendly’s url)

  1. Hola, buen dia y gracias por el post.

    Disculpa, pero no puedo hacer que funcione mi app (Solo se ve una pantalla blanca y el firebug manda un error 500 Internal Server Error). Supuse que se trataba de algun problema en la configuracion de apache, ya que en XAMPP funciona correctamente, pero al probar esto no me resolvio el problema y con una aplicacion nueva no tengo ningun problema para visualizarla. Alguna sugerencia extra?. Estoy en Ubuntu 13.10

    PD: El archivo /etc/apache2/sites-available/default no existia asi que lo cree con las lineas que mencionaste.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *