Saltar al contenido
Codifíca.me | Desarrollo web | Programación
Php

Cómo poner tus URL limpias utilizando el Framework Yii

10 septiembre, 2015

En esa mini-entrada recopilo la forma de tener tus urls limpias usando Yii, así tendrás unas URLs más claras para el usuario y sobretodo para Google, que como ya sabrás le gustan las “clean urls”.

Las urls de Yii tienen este formato, lo cual no es muy bonito de leer para el usuario final y tampoco para los bots de Google.

http://localhost/index.php?r=posicion/admin

Bien, pues cambiarlos a un formato limpio es bastante sencillo, en la carpeta config de tu aplicación Yii encontrarás un fichero que se llama main.php , seguramente ya le hayas tocado antes para otras cosas. Pues aquí tienes que descomentar esta parte:

'urlManager'=>array(
			'urlFormat'=>'path',                     
			'rules'=>array(
				'/'=>'/view',
				'//'=>'/',
				'/'=>'/',
			),
		),

Y bueno, ya tienes la primera parte hecha, aunque todavía se pueden quedar más limpias, para ello tienes que añadir el parametro showScritpName => false , tal que así:

'urlManager'=>array(
			'urlFormat'=>'path',
                        'showScriptName'=>false,
			'rules'=>array(
				'/'=>'/view',
				'//'=>'/',
				'/'=>'/',
			),
		),

Esta parte nos valdría para quitar la parte de las extensiones en las urls limpias, por ejemplo esta parte index.php .

Y ahora solo nos quedaría decirle al servidor que maneje las urls limpias, para eso tenemos que tener activado el módulo rewrite en Apache, casi siempre está activado, sino es así actívalo y reinicia Apache.

yii urls limpias

Con el fin de que Apache maneje correctamente estas URLs tenemos que añadir esta parte al fichero .htaccess , que se encuentra en el directorio raiz de tu aplicación, y en el caso de que no esté ese fichero tienes que crearlo (.htaccess). En este fichero añadimos las siguientes lineas:

IndexIgnore */*
RewriteEngine on

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule . index.php

Y listo, ya tienes las URLs que siempre has soñado 😉 😉