Duda acerca del routing...

5 views
Skip to first unread message

iperich

unread,
Feb 6, 2008, 6:32:38 PM2/6/08
to CakePHP Chile
Hola maestros, mi consulta:

Quiero que www.misitio.com/mi_controller/mi_funcion/nombre_usuario
quede como www.misitio.com/nombreusuario, pero necesito que www.misitio.com
apunte a home.ctp.

Lo intenté poniendo

Router::connect('/*', array('controller' => 'mi_controller', 'action'
=> 'mi_funcion', 'home'));

en routes.php, pero cuando quiero hacer /otro_controller/otra_función
me manda a /mi_controller/mi_funcion, supongo que porque lo asume como
*...

se puede hacer?
como?

Gracias de antemano...

Pablo Viojo

unread,
Feb 6, 2008, 7:28:59 PM2/6/08
to cakeph...@googlegroups.com


2008/2/6 iperich <ipe...@gmail.com>:

Efectivamente, la verdad no te recomiendo que uses url 's  del tipo www.misitio.com/nombreusuario, ya que, o bien vas a tener que definir los routes a todos los controller (ej: Router::connect('/controllerA/*', array('controller' => 'controllerA'));Router::connect('/controllerB/*', array('controller' => 'controllerB'));) antes de la que tu definiste, o solamente vas a poder acceder a mi_controller.

Te recomendaría que usaras url's tipo misitio.com/user/nombredeusuario, ya que eso te va a permitir luego referencias otras "entidad" (ej: comentarios, articulos, etc...)

Saludos,

--
Pablo Viojo
pvi...@gmail.com
http://pviojo.net

iperich

unread,
Feb 7, 2008, 12:24:27 AM2/7/08
to CakePHP Chile
On 6 feb, 21:28, "Pablo Viojo" <pvi...@gmail.com> wrote:
> 2008/2/6 iperich <iper...@gmail.com>:
>
>
>
>
>
> > Hola maestros, mi consulta:
>
> > Quiero quewww.misitio.com/mi_controller/mi_funcion/nombre_usuario
> > quede comowww.misitio.com/nombreusuario, pero necesito que
> >www.misitio.com
> > apunte a home.ctp.
>
> > Lo intenté poniendo
>
> > Router::connect('/*', array('controller' => 'mi_controller', 'action'
> > => 'mi_funcion', 'home'));
>
> > en routes.php, pero cuando quiero hacer /otro_controller/otra_función
> > me manda a /mi_controller/mi_funcion, supongo que porque lo asume como
> > *...
>
> Efectivamente, la verdad no te recomiendo que uses url 's del tipowww.misitio.com/nombreusuario, ya que, o bien vas a tener que definir los
> routes a todos los controller (ej: Router::connect('/controllerA/*',
> array('controller' => 'controllerA'));Router::connect('/controllerB/*',
> array('controller' => 'controllerB'));) antes de la que tu definiste, o
> solamente vas a poder acceder a mi_controller.
>
> Te recomendaría que usaras url's tipo misitio.com/user/nombredeusuario, ya
> que eso te va a permitir luego referencias otras "entidad" (ej: comentarios,
> articulos, etc...)
>
> Saludos,
>
> --
> Pablo Viojo
> pvi...@gmail.comhttp://pviojo.net

Es que la idea es ser tipo twitter, flickr, youtube, que uno pone
www.youtube.com/nombreusuario y entra de inmediato.
Es un asunto comercial. Debe ser así.

Es muy complejo?

iperich

unread,
Feb 7, 2008, 12:41:41 AM2/7/08
to CakePHP Chile
O sea... si hay que hacerlo así como dices, hay que hacerlo no más...
pero en todo caso no había pensado en que se puede hacer así...

hmmm... veré que hago...

Gracias y saludos!!
> Es que la idea es ser tipo twitter, flickr, youtube, que uno ponewww.youtube.com/nombreusuarioy entra de inmediato.

Pablo Viojo

unread,
Feb 7, 2008, 7:00:07 AM2/7/08
to cakeph...@googlegroups.com
Entiendo que pueda ser un tema comercial (aunque mas que eso lo veo como una facilidad para los visitantes). Otra cosa que podrías hacer es modificar la clase Router (extendiendola) de modo que si recibe una URL que se del tipo /algun_controller se vaya automaticamente a ese controller y si no al de users, de ese modo te ahorras definir ruteos (si hay muchos controllers puede ser una diferencia). La limitante es que no vas a poder tener usuarios que se llamen como tus controller :D

Saludos,

2008/2/7 iperich <ipe...@gmail.com>:

Pablo Viojo

unread,
Feb 7, 2008, 7:31:39 AM2/7/08
to cakeph...@googlegroups.com


2008/2/7 Pablo Viojo <pvi...@gmail.com>:

Entiendo que pueda ser un tema comercial (aunque mas que eso lo veo como una facilidad para los visitantes). Otra cosa que podrías hacer es modificar la clase Router (extendiendola) de modo que si recibe una URL que se del tipo /algun_controller se vaya automaticamente a ese controller y si no al de users, de ese modo te ahorras definir ruteos (si hay muchos controllers puede ser una diferencia). La limitante es que no vas a poder tener usuarios que se llamen como tus controller :D

Saludos,

Prueba de agregar este código al comienzo del routes.php

$controllers = Configure::listObjects("controller");
foreach($controllers as $controller){

    $controllerName = Inflector::variable($controller);
    Router::connect('/' . $controllerName . '/:action/*', array('controller' => $controllerName));
   
}

De este modo obtienes todos los controllers y luego aplicas cada ruteo en forma automatica (el Inflector::variable($controller) es para que la primer letra se coloque en minúsculas)

Saludos,

Cristian Sepulveda

unread,
Feb 7, 2008, 8:45:19 AM2/7/08
to cakeph...@googlegroups.com
Twitter hace algo interesante, cuando vas a twitter.com y las cookies se activan ya que estás logeado, te envia a /home y ves tu timeline.

si no estas logueado, te quedas en twitter.com y ahi está el formulario de login.

Si vas a twitter/crsepulv da lo mismo si estas logueado o no, te muestra el timeline de crsepulv

esos serian mis 2cents...jaja.

Bonus Track: Mi vision es que los usuarios se deben apropiar de los sitios y hay que darles esa posibilidad, mi cuenta en twitter es MIA y yo le pongo mi fondo y mis CSS y esas cosas, aunque pueda parecer un detalle: que MI espacio en twitter sea twitter.com/crsepulv y no twitter.com/users/crsepulv creo que hace una gran diferencia, lamentablemente para los desarrolladores esta distinción les genera los "problemas" que hemos visto en este hilo, pero es un desafío que vale la pena abordar y solucionar.

Ahora, claramente twitter tiene que bloquear que un usuario no se ponga como login HOME.

ese fue otro cent!.



2008/2/7 Pablo Viojo <pvi...@gmail.com>:



--
Cristian Sepúlveda.

Te invito a visitar y comentar mis blogs:
http://www.osaka.cl
http://cristiansepulveda.bligoo.com

(56 9) 345 63 64.
MSN: crse...@hotmail.com
LinkedIn.com: http://www.linkedin.com/in/cristiansepulveda

iperich

unread,
Feb 7, 2008, 9:24:18 AM2/7/08
to CakePHP Chile
Simple y efectivo.

Notable.

Gracias...!

Pablo Viojo

unread,
Feb 8, 2008, 6:54:42 AM2/8/08
to cakeph...@googlegroups.com


2008/2/7 Cristian Sepulveda <sepulveda...@gmail.com>:

 aunque pueda parecer un detalle: que MI espacio en twitter sea twitter.com/crsepulv y no twitter.com/users/crsepulv creo que hace una gran diferencia,

¿Puedes explicar un poco mas esto?

Cristian Sepulveda

unread,
Feb 8, 2008, 9:38:07 AM2/8/08
to cakeph...@googlegroups.com
Pablo, no me refiero a un tema tecnológico, si no al exito que pueda tener la plataforma, me explico:

Nosotros estamos trabajando en Meeting.cl y esperamos lanzarlo como un servicio gratuito, donde cada usuario tendrá su propia sala Meeting.cl y podra hacer lo que quiera con ella (cuztomizar el CSS, agregar y quitar funcionalidades, etc). Para que esto tenga el exito viral que han tenido Twitter, fotolog o blogger veo que tenemos que preocuparnos de cada detallito, uno de esos es la URL que tendrá la sala de cada uno, para que se de ese fenómeno de apropiación  que tendrán los usuarios con el servicio, si la URL de mi sala es meeting.cl/index.php?user=crsepulv no es lo mismo que meeting.cl/users/crsepulv o meeting.cl/crsepulv aunque sea un webada, el "efecto social" de apropiación del espacio no es el mismo, y veo que el mas efectivo es el ultimo, y aunque esta decision te genere un "problema tecnológico" de desarrollo, vale la pena el esfuerzo.

Veo que eso aplica casi para cualquier plataforma estilo web 2.0, donde el usuario es el centro de todo y que éste se apropie del servicio es tema clave.

Saludos.



2008/2/8 Pablo Viojo <pvi...@gmail.com>:

Pablo Viojo

unread,
Feb 8, 2008, 9:45:29 AM2/8/08
to cakeph...@googlegroups.com


2008/2/8 Cristian Sepulveda <sepulveda...@gmail.com>:

 uno de esos es la URL que tendrá la sala de cada uno, para que se de ese fenómeno de apropiación  que tendrán los usuarios con el servicio, si la URL de mi sala es meeting.cl/index.php?user=crsepulv no es lo mismo que meeting.cl/users/crsepulv o meeting.cl/crsepulv

Totamente de acuerdo con la diferencia entre la opcion 1 y las otras dos, pero lo que no veo claro es la diferencia entre la 2 y la 3 como marcabas anteriormente. Pero bue...creo que es una cuestión un tanto fina ;)

Saludo y buena suerte con Meeting.cl,

Dani

unread,
Feb 8, 2008, 1:32:01 PM2/8/08
to CakePHP Chile
Me parece interesante este tema de todas maneras.
En Needish también estamos pensando poner un URL directo con el nombre
de usuario como en Twitter...
Todavía no he hecho mis investigaciones, pero ahí les estoy avisando
Saludos
D

On 8 feb, 11:45, "Pablo Viojo" <pvi...@gmail.com> wrote:
> 2008/2/8 Cristian Sepulveda <sepulveda.crist...@gmail.com>:
>
> > uno de esos es la URL que tendrá la sala de cada uno, para que se de ese
> > fenómeno de apropiación que tendrán los usuarios con el servicio, si la URL
> > de mi sala es *meeting.cl/index.php?user=crsepulv* no es lo mismo que *
> > meeting.cl/users/crsepulv* o *meeting.cl/crsepulv *

iperich

unread,
Feb 11, 2008, 8:48:47 AM2/11/08
to CakePHP Chile
de hecho, para mí lo más delicioso en apropiación es lo que hace
blogger o bligoo: iperich.blogspot.com o iperich.bligoo.com.

pancho - dospuntocero.cl

unread,
Feb 12, 2008, 11:04:13 AM2/12/08
to CakePHP Chile
de esto meeting.cl/index.php?user=crsepulv a meeting.cl/crsepulv

se puede realizar utilizando .htaccess hay varios tutoriales en
internet de como hacer esos cambios de url

voy a ver si encuentro uno weno y lo subo

pancho - dospuntocero.cl

unread,
Feb 12, 2008, 12:05:45 PM2/12/08
to CakePHP Chile

Pedro Pablo Fuentes Schuster

unread,
Feb 12, 2008, 4:24:07 PM2/12/08
to cakeph...@googlegroups.com
ej para nombreUsuario.meeting.cl

Primero en tu servidor dns deberias generar un wildcard para *.meeting.cl luego:

RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^([^.]+)\.meeting\.cl$ [NC]
RewriteRule ^/(.*)$ http://meeting.cl/%1/$1 [R=301,L]

Esto haria lo siguiente:

http://nombreUsuario.meeting.cl/datos/algo.php lo procesa internamente
como http://meeting.cl/nombreUsuario/datos/algo.php
(http://meeting.cl/%1/$1)

Espero sirva de orientación

2008/2/12 pancho - dospuntocero.cl <francisc...@gmail.com>:

--
Pedro Pablo Fuentes Schuster
+56 (9) 9 912 35 50

iperich

unread,
Feb 15, 2008, 10:39:41 AM2/15/08
to CakePHP Chile
le puse "SOLVED" al asunto para llevar registro de los problemas que
se solucionan...

On 12 feb, 18:24, "Pedro Pablo Fuentes Schuster"
<pedrofuen...@gmail.com> wrote:
> ej para nombreUsuario.meeting.cl
>
> Primero en tu servidor dns deberias generar un wildcard para *.meeting.cl luego:
>
> RewriteEngine On
> RewriteBase /
> RewriteCond %{HTTP_HOST} ^([^.]+)\.meeting\.cl$ [NC]
> RewriteRule ^/(.*)$http://meeting.cl/%1/$1[R=301,L]
>
> Esto haria lo siguiente:
>
> http://nombreUsuario.meeting.cl/datos/algo.phplo procesa internamente
> comohttp://meeting.cl/nombreUsuario/datos/algo.php
> (http://meeting.cl/%1/$1)
>
> Espero sirva de orientación
>
> 2008/2/12 pancho - dospuntocero.cl <francisco.are...@gmail.com>:
>
>
>
>
>
> > hechale una mirada a esto, quizás pueda servir:
> >http://bakery.cakephp.org/articles/view/hosting-admin-urls-on-a-subdo...
> >http://groups.google.com/group/cake-php/browse_thread/thread/22d88583...

Marcelo Lara Olivares

unread,
Feb 16, 2008, 8:35:14 AM2/16/08
to cakeph...@googlegroups.com
Podriamos tener un estandar alli, porque yo le puse solucionado al otro post, en ingles o en español? que opinan?
saludos, Marcelo.

iperich escribió:
Reply all
Reply to author
Forward
0 new messages