¿Qué es Friendly URL?

Las friendly URL o URL amigable son direcciones fáciles de recordar, seguro hemos visto varias páginas web donde en vez de tener una dirección como esta

1
http://www.mysite.com/product.php?id=12344&active=1

Tienes direcciones mucho mas sencillas y entendibles, algo como esto:

1
http://www.mysite.com/tv-lcd-samsung

Ventajas de las URL amigables

En primer lugar son más fáciles de entender y memorizar pero aun mas importante los buscadores como google las indexan más fácilmente y dan mejores resultados de búsqueda.

Cómo uso friendly URL en mi sitio PHP

Para eso necesitamos un servidor que además de soportar PHP tenga activo el módulo «Rewrite Rules» (la mayoria de servidores actuales lo tiene) luego creamos un archivo .httaccess con un contenido como este:

1
2
3
4
5
6
7
Options +FollowSymLinks  
RewriteEngine On  
 
RewriteCond %{SCRIPT_FILENAME} !-d  
RewriteCond %{SCRIPT_FILENAME} !-f  
   
RewriteRule ^productos/(\d+)*$ ./product.php?id=$1

Lo que hace este script es enmascarar una dirección como product.php?id=2222 en algo como productos/222/miproducto, además los RewriteCond nos permite verificar que no se aplica si existiera realmente esa carpeta o archivo.

Esa es la forma más simple de usar Friendly URL aunque tambien es posible usando PHP

¿Qué ocurre con las rutas relativas?

Si usas rutas amigables del tipo misitio.com/categoria/miproducto
Las rutas relativas que antes llamaban a las imágenes, hojas de estilo y javascript dejan de funcionar ya que se asume que estás dentro de una carpeta la solución más simple desafortunadamente no funciona bien en IE6(cuando no)

1
<base href="http://www.misitio.com/">

Esa simple linea de codigo hace que el browser se olvide de tu ruta actual y unicamente use el path que asignas

Ya que la solución más práctica no es crossbrowser hay que cambiar todo a rutas absolutas para no tener que hacerlo a mano para ello creamos una constante con nuestro path absoluto

1
define("_mipath", "http://www.misitio.com/")

Y para agregarlo a nuestros archivos sería

1
<img src="<?=_path?>miimagen.jpg">

Hacerlo no es tan traumático como parece ya que imagino estás usando una web modular y basta modificar unos cuantos archivos sin web modular no veo como puedas usar url amigable