Siguiendo con los tutoriales de Yii , hoy vamos a ver como conseguir urls amigables , urls limpias o seo friendly urls…como les guste llamarles.

Si vieron los anteriores articulos de Yii habran notado que las urls son feas, siempre llevan un ‘index.php?r=’ y vamos a mejorar eso.

Son 3 pasos:

Paso 1- Activar mod_rewrite en apache

Por defecto ya deberian tenerlo activado, la mayoria de los hosting lo tienen activado, asi que este paso en general puede saltearse. Pero si no esta activado entonces pueden usar el siguiente comando en distos basadas en Debian/Ubuntu:

a2enmod rewrite

En Arch linux habria que editar el archivo /etc/httpd/conf/httpd.conf y agregar lo siguiente:

LoadModule rewrite_module modules/mod_rewrite.so

Al final de donde estan todos los ‘LoadModule’.

En ambos casos habra que reiniciar el apache para que los cambios surjan efecto. O reiniciar la pc.

[URLs yii ](https://paraisolinux.com/wp- content/uploads/2012/11/URLs.png)

Paso 2- En su aplicacion deberan editar el archivo main.php que se encuentra en protected/config. Alli encontraran una seccion comentada que dice asi:

[php] /* ‘urlManager’=>array( ‘urlFormat’=>‘path’, ‘rules’=>array( ‘/'=>'/view’, ‘//'=>'/’, ‘/'=>'/’, ), ), */ [/php]

La descomentan para que quede asi:

[php]‘urlManager’=>array( ‘urlFormat’=>‘path’, ‘showScriptName’=>false, ‘rules’=>array( ‘/'=>'/view’, ‘//'=>'/’, ‘/'=>'/’, ), ), [/php]

Como veran ademas de descomentarla le agregue una linea, la que dice ‘showScriptName’.

Paso 3- En la raiz de su aplicacion deben crear un archivo .htaccess con el siguiente contenido:

[shell] 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 [/shell]

Presten atencion y fijense que el archivo .htaccess no se crea dentro de la carpeta ‘protected’ donde ya hay un .htaccess sino en el directorio superior a ese.

Bueno, eso seria todo. Tomando como ejemplo el Hola mundo en Yii que hicimos hace tiempo. La url a la que habia que acceder era

http://localhost/testyii/index.php?r=site/index

Y ahora es:

http://localhost/testyii/site/index

Mucho mas simple y bonito verdad?