FingerCatch! 0.1
Presiona la mano en la posición indicada por el número grande. En rojo los errores, en verde los aciertos. Suerte!
[Download FingerCatch! 0.1]
Tengo una buena canción para cantar...

Tool - Stinkfist
Lyric...

Mis To-Do's


The good lord FSM
[[http://pena2.org]] [Remember: Un Slogan aqui]

March 23, 2007

Mini-tutorial: URLs amigables (friendly URLs)

Filed under: webs, about_me, programacion, PHP — pena2 @ 4:56 am

Estoy re-diseñando y re-programando Losdelafoto.com y una de las nuevas características serán URLs amigables.
El plan es ir de esto:
http://www.losdelafoto.com/verfolder.php?f=258
a esto:
http://www.losdelafoto.com/folder/258

Luego de un poco de Google y varios golpes a mi teclado, pantalla, escritorio, vaso, hermano (para qué se pone a la par cuando estoy en la compu!!) pues creo que he encontrado una solución bastante simple.
Espero les sirva para aprender o corregirme.

La solución que utilicé es utilizar el milagroso mod_rewrite de Apache. Para esto hay 3 pasos básicos:

1. Verificar que tienes Rewrite activado en tu server

Simple: phpinfo()

2. Crear/modificar tu archivo .htaccess en el root de tu sitio

Algo así quedó mi .htaccess:

RewriteEngine on
RewriteBase /losdelafoto/
RewriteRule !\.(gif|jpg|png|css|js)$ index.php

En RewriteBase tengo “/losdelafoto/” porque localmente acceso al sitio por
http://localhost:81/losdelafoto (Corro apache en el puerto 81 para poder utilizas IIS también)
Cuando esté al aire será solamente “RewriteBase /
La tercera linea dice que los archivos con esas extensiones los muestre normalmente (si no mostrará index.php al querer ver una imagen por su path directo!!)

Capturar tus variables con PHP

Y en mi index.php capturo mis variables algo así:

$url=strip_tags($_SERVER['REQUEST_URI'])
$url_array=explode("/",$url)
array_shift($url_array)
array_shift($url_array) //solo si es localmente se le quita otro espacio, al aire esta linea se omite
$rpage= isset( $url_array[0] ) && strlen(trim($url_array[0]))>0 ? trim(strtolower($url_array[0])) : "index"

De esta manera tengo un array con cada dato que envío separado por “/”
Ahora mi applicación sabe que archivo incluir según el contenido de $rpage (Ejemplo: “verfotos” para un listado de folders o “folder” para el detalle de un folder, etc.).

Voilá. Houston, tenemos URLs amigables.

Este es solamente una de las mejoras que estoy realizando. Estén atentos que tengo MUCHAS ideas para Losdelafoto.com ;)

14 Responses to “Mini-tutorial: URLs amigables (friendly URLs)”

  1. j_aroche Says:

    Yo aprendí a manejarlas directo en el .htaccess:

    RewriteRule ^feed/([a-z0-9]+).png$ index.php?feed=$1 [L]

    no es muy elegante, pero funciona XD

    Este guey uso Mozilla Firefox Mozilla Firefox 2.0.0.2 y Linux Linux
  2. pena2 Says:

    Es otra opcion que consideraré, grazie.

    Este guey uso Mozilla Firefox Mozilla Firefox 2.0.0.3 y Windows Windows XP
  3. sirgt Says:

    y esta http://tinyurl.com/ ? xD

    Este guey uso Mozilla Firefox Mozilla Firefox 2.0.0.2 y Windows Windows 2000
  4. Pena2 UNcensored » Busco programador chispudo!! Says:

    […] Mini-tutorial: URLs amigables (friendly URLs)  3 sirgt, pena2, j_aroche […]

    Este guey uso WordPress WordPress 2.1
  5. Mario Soto Says:

    Tengo una duda:
    Si quiero pasar de:
    sitio.tld/?tema=prueba&numero=10&busca=palabra a
    sitio.tld/prueba/numero/?busca=palabra
    como jodidos le tendria que hacer para el modrewrite?

    Esta charada no muy la entiendo

    Este guey uso Mozilla Firefox Mozilla Firefox 2.0.0.4 y Windows Windows XP
  6. pena2 Says:

    @Mario Soto: http://www.sitepoint.com/article/search-engine-friendly-urls
    podrias hacerlo con el metodo 1 mostrado ahi, el mas sencillo con PATH_INFO

    Este guey uso Mozilla Firefox Mozilla Firefox 2.0.0.4 y Windows Windows XP
  7. Mario Soto Says:

    Gracias. Lo que no entendia era como hacer para redireccionar cualquier cosa a una pagina. entonces tendria que hacer:

    RewriteEngine on
    RewriteBase /laprueba/
    RewriteRule !.$ index.php

    esto para que cualquier cosa la pase a index.php incluyendo esto, no lo he logrado pero voy a probarlo. Gracias.

    Este guey uso Mozilla Firefox Mozilla Firefox 2.0.0.4 y Windows Windows XP
  8. pena2 Says:

    @Mario: No problemo. Pilas pue!

    Este guey uso Mozilla Firefox Mozilla Firefox 2.0.0.4 y Windows Windows XP
  9. Charly Says:

    Recién comienzo con todo esto. A pesar de esta excelente info y otras que hay en la red no logro hacer marchar algo tan simple como esto:

    pagina.php?link=auto
    Ej:
    RewriteRule ^([^/]*)\.html$ pagina.php?link=$1 [L]

    He usado los convertidores online le he dado mil vueltas y nada.

    El programa en cuestión esta en “zend” 1-no puedo modificarlo) 2-influye que este en zend?… agradezco alguna pista para seguir investigando.

    Gracias

    Este guey uso Mozilla Firefox Mozilla Firefox 2.0.0.6 y Windows Windows XP
  10. pena2 Says:

    @Charly: no me converti en experto de htaccess (todavia), pero en el Grupo PHP de guate podes preguntar de todo:

    http://groups.google.com/group/phpgt

    Este guey uso Mozilla Firefox Mozilla Firefox 2.0.0.6 y Windows Windows XP
  11. lachof Says:

    que onda
    una preguntota se puede configurar un servidor windows para que utilice este tipo de urls? algo asi como el htaccess para apache quiza???

    gracias!

    Este guey uso Mozilla Firefox Mozilla Firefox 2.0.0.11 y Windows Windows Vista
  12. pena2 Says:

    @lachof: se debe poder, pero la verdad no he investigado como

    Este guey uso Flock Flock 1.0.3 y Mac OS Mac OS X
  13. pena2 Says:

    @lachof: si usas apache en windows se puede, pero con IIS no se

    Este guey uso Flock Flock 1.0.3 y Mac OS Mac OS X
  14. j_aroche Says:

    con IIS si hay un modulo, pero es de pago… mejor usa Apache =P

    Este guey uso Mozilla Firefox Mozilla Firefox 2.0.0.10 y Ubuntu Linux Ubuntu Linux

Leave a Reply