TUTORIAL YII FRAMEWORK (CAPÍTULO 15) – NO MOSTRAR INDEX.PHP EN LAS URL

Si deseamos que los módulos de nuestro sitio puedan ser accedidos así: /miproyecto/contact y no así:  /miproyecto/index.php&r=contact debemos hacer varios cambios en nuestro proyecto. En primer lugar ejecutamos en la consola de linux: a2enmod rewrite, abrimos /etc/apache2/SiteAvailables/default y cambiamos “Allowoverride=None” por “Allowoverride=All” (se encuentra en dos lineas distintas), luego cambiamos la dirección de nuestro archivo .htaccess de nombre_proyecto/protected/ a nombre_proyecto/, .htaccess es un archivo oculto, para mostrar los archivos ocultos usamos el atajo control + h.
Abrimos el .htaccess y pegamos los siguiente:

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

Finalmente vamos a /protected/config/main.php y en el arreglo component agregamos:

'urlManager'=>array(
'urlFormat'=>'path',
'showScriptName'=>false,
'caseSensitive'=>false,
),

Con esto hemos limpiado las URLs de nuestro sistema, si nuestros controladores contienen mayúsculas es necesario colocar el atributo ‘caseSensitive’ en true.

Anuncios

Publicado el 27/01/2012 en Yii Framework. Añade a favoritos el enlace permanente. 9 comentarios.

  1. al copiar el .htaccess en la carpeta del proyecto (la carpeta que contiene la subcarpeta protected) me da un ¡error en el servidor!… Estoy comenzando con Yii y con la programación MVC, y no sé porque no me funciona… he intentado seguir ejemplos de transformar urls del libro Application Development Cookbook de Makaroff, pero tampoco me funciona (en el no se dice nada de cambiar de directorio el .htaccess) y la respuesta es que no encuentra ninguna página… ayuda?? consejo??

    • coloca que error te da, usas apache?, a ver si te podemos ayudar, saludos

      • Pues a ver, por partes. Muchas gracias por responder! (jiji).
        Si uso Apache, xampp, en mac, snow leopard, tengo configurado el allowoverride en all (todas las lineas en las que aparece Allowoverride en el httpd.conf), está activado el mod_rewrite, he añadido las lineas que has puesto en el .htaccess, lo he hecho con el vi, mediante el terminal del root, y he probado a dejarlo en la carpeta protected, que es como dice el manual de makarof, lo cual me dice que no se encuentran las url, y a ponerla en la carpeta raiz del proyecto (es decir, la carpeta donde está contenida la carpeta protected antes nombrada) y me da un error de servidor, lo cual me dice que es el .htaccess por experiencias anteriores al trabajar con este archivo (no hay nada más que pueda dar un error, puesto que el proyecto a penas se toco). En el archivo main.php ed la carpeta conf añadí, tanto tu código como este (así queda el urlManager):

        ‘urlManager’=>array(
        ‘urlFormat’=>’path’,
        ‘showScriptName’=>false,
        ‘rules’=>array(
        ‘home’ => ‘website/index’, ” => ‘website/page’, ‘page/’ => ‘website/page’,),),

        Me gusta yii, pero me está empezando a tocar las narices! jajajajajaja

        Gracias…

  2. https://gabrielduarte77.wordpress.com/

    ya has trabajado antes en htaccess en mac?, tendrá que ver con eso el problema?, mi ejemplo lo hice con debian squeeze, apache2, php5 y postgresql 9.1 y varios ya lo han realizado exitosamente con otras combinaciones

    • Si, lo había utilizado, pero bien es cierto, que no había manejado “urls amigables” antes, así que mi uso de htaccess se limitaba a denegar acceso a ciertos ficheros, o evitar listados, y otras utilidades… uso php 5.3.1, mysql 5.1.44… no he pensado que debiese de dar problemas, con un editor de texto tan útil como Vi… me he dado cuenta, porque el ejemplo de Makaroff, en las reglas, usa ‘website/loquesea’ para referirse al path, y he visto en otros manuales que ponen site. El no habla de que haya que cambiar nada, pero ¿puede estar ahí el error?

  3. YAAA!! joopeee!! por fin! a la séptima vez, funcionó! el htacces, creo que deje el deny from all, después no borre (pensando que si) el .htaccess de la carpeta pretected, con el mismo codigo que el .htaccess de la carpeta nombre_del_proyecto/.

    A parte, macaroff usa, para referirse al site la variable website, creo que así se usaba en la versión 1.6, y en la 1.9 (la que yo uso) se usa site…

    Muchas gracias, sigo con mis apuntes, y espiando tu blog jejeje

    Un saludo!!

  4. hola buen dia. muy bueno los tuto. implemente este capitulo (15), y logre generar mi pdf perfectamente. pero en mi caso el pdf que voy a generar es de dos modelos. uno solicitud y el otro modelo tiene que ver con los detalles de esa solicitud, yo para la vista cree una funcion que me trae los detalles de la solicitud. ahora mi pregunta es puedo llamar esta funcion que cree desde el mi achivo pdf.php y en que parte la llamo. gracias

Tu Opinión es Importante, Comenta!

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s