Friendly URLs (Enlaces amigables desde aplicaciones con YiiFramework)
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
There are currently no comments highlighted.

Sabes como hacer que no se muestren los parámetros?
es decir, que no sea en plan:
/variable/valor1/variable2/valor2
Si no que sea solo
/valor1/valor2
Un saludo
Hace algun tiempo intente hacer algo similar a lo que buscas, pero no tuve exito.. se que se logra modificando parametros del .htaccess (mod rewrite) pero como te digo, nunca tuve buenos resultados por lo que abandone esa inquietud..
Mucho tiempo después urgando otras cosas en la red me encontre con una solucion que pense me ayudaria con esa vieja duda, lei un poco y al final me desanimo por completo esa forma de implementacion, por que para lograrlo se necesitan definir en el .htaccess las variables que se van a recibir via GET .. algo asi como variables fijas..
[...] Amigables Esta publicación es una copia exacta del post Friendly URLs del blog de Erling Fiallos, por cuanto me ha parecido muy completo su aporte y explicación acerca [...]