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..

Facebook Twitter LinkedIn Google+ Flickr YouTube Skype 

Compartir en...Tweet about this on TwitterPin on Pinterest0Share on LinkedIn0Share on Google+0Share on Facebook3