Cuando migré mi sitio a LighTTPD + FastCGI, tuve que reescribir algunas reglas para mod_rewrite (Apache, LigHTTPD) y redirect (mod_redirect LighTTPD). La función principal de esto es evitar las URIs complicadas. Por ejemplo:
/Index.jc -> /Index.aspx
/CV.jc -> /CV.aspx
/blog/ -> /Blog.jc
/blog/wysiwyg.html -> /Post.aspx?nombre=wysiwyg
Pero me di cuenta de que estaba cometiendo algunos errores. Por ejemplo, tenía dos extensiones distintas, .jc (inventado) y .html (HTML estándar). Además, eran extensiones innecesarias. Si yo podía reescribir las URIs, ¿por qué utilizar extensiones?.
Cuando alguna empresa publica una dirección web, muy pocas veces se tiene en cuenta la usabilidad de la URI. Por ejemplo, es común ver anuncios como:
Visite http://...misitio..../portal/inicio.html
En este caso, bastaría con usar un índice de directorio (Apuntando hacia inicio.html). Esto es un rewrite simple.
Pero muchas veces, los sitios intentan ofuscar tanto las URIs que resultan en atrocidades como estas:
http://www.download.com/Corel-DVD-Copy/3000-2194_4-10754309.html?tag=toprated
Sugerencia: http://www.download.com/software/Corel-DVD-Copy/
http://www.tercera.cl/lt4/canal/nacional/0,0,3255_5666,00.html
Sugerencia: http://www.tercera.cl/canal/nacional/
http://www.falabella.com/webapp/commerce/command/ExecMacro/falabella/macros/home.d2w/report
Sugerencia: http://www.falabella.com/home
Si existe esta tecnología tan simple hace años, ¿por qué no utilizarla?. CNN durante mucho tiempo ha tenido una excelente política sobre las URIs. Por ejemplo:
http://cnn.com/time
http://cnn.com/politics
¡Qué diferencia! Aunque estas URIs pueden ser redirecciones, son patrones sencillos y fáciles de memorizar. Por eso, he decidido predicar con el ejemplo. Intenté dejar las URIs lo más simple posible:
http://www.juancri.com (redirección a http://www.juancri.com/principal)
http://www.juancri.com/blog
http://www.juancri.com/cv
http://www.juancri.com/links
http://www.juancri.com/blog/POST (ejemplo: http://www.juancri.com/blog/ubuntu_netboot)
Tambien es importante mantener redirecciones para la notación anterior. Así, /Index.jc redirecciona a /principal.