Cuando uno hace aplicaciones en PHP o algún otro lenguaje parecido, generalmente tiene dos opciones: o trabajar con un framework que cumple la función de router o trabajar a “php puro” y tener urls feas y demases.
En el contexto de aplicaciones web, un router es un sistema que toma una petición del servidor web, por ejemplo /post/new, y carga la página correspondiente.
Para un nuevo proyecto que estoy haciendo decidí no usar un framework y hacerme mi propio router, siguiendo un poco la línea de como lo hace Kohana hice el siguiente código.
Trabaja con clases. Si se consulta por /post/jojo va a llamar a el método action_jojo() de la clase Controller_Post, bien similar a lo que hace Kohana.
Las clases las incluí en el archivo controller.php.
Comenté el código y lo subí acá por si le quieren dar una vuelta.
Es importante que le digan a su servidor web que redirija todas las consultas a el archivo index.php.
En nginx puse el siguiente código en mi vhost.
1 | try_files $uri $uri/ /index.php; |
Ya no recuerdo como se hace en Apache, pero pueden usar el .htaccess de WordPress.
Díganme qué les parece, si les sirvió y qué le mejorarían.
Update: ¿Por qué hice esto?
Comprendo totalmente el fin de los frameworks, de hecho trabajé con uno por un tiempo: Kohana. Me di cuenta que en la práctica no necesito todo lo que me ofrece un framework.
Intenté usar SlimFramework por recomendación de @pottersys, pero lo que a principio resultó simplificar las tareas terminó dificultándolas más, por eso me quise hacer un Router, que es uno de mis mayores fines para usar un framework.
Por mi trabajo no me veo necesitado a simplificar tanto las tareas ni ahorrar tanto tiempo, prefiero tener un poco más de control sobre mi código. Lo que hago acá es juntar un superset de funciones que siempre uso.


Hola José,
¿Te gusta complicarte la vida?, está bien, así aprendes más. Va llegar un punto que vas a necesitar optimizar tu tiempo y hacer rendir mas.
En relación a lo anterior te hago la siguiente pregunta: Si usas productos Apple, con el fin que son funcionales y “facilitan” la vida, ¿para qué te la complicas reinventando la rueda?. Si existe un Framework o algo que ya hace eso, utilízalo y ya!
Creo que Apache se hace algo como
Entonces, es para poner pretty urls?
Aunque tengo una pequeña pregunta para esto: al tener las urls sin los códigos php en ellas, ¿no afecta eso el uso de el metodo $_Get[''] ?
@Greed: no, para nada
Simplemente hay que filtrar antes del ?