Como poner friendly URL a mi pagina

Categories: Otros, Posicionamiento - Tags: , , ,

¿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

9 Responses to Como poner friendly URL a mi pagina

  1. Javier says:

    Que tal Miguel, recien empiezo con esto de las friendly url, intento hacer algo como

    producto?id=222&otra=x
    en producto/222/x/ como seria eso posible?

    Como siempre, gracias de antemano

  2. Javier says:

    Hey que tal creo que ya solucione el problema anterior, solo que ahora realizo un ejemplo un poco mas complejo, ahora la duda es, como se manejan las rutas de los css y js ? .
    Cual es la manera mas sencilla para no realizar demasiados cambios? (en cuanto a rutas), suponiendo que adapto esto a un proyecto

    Gracias nuevamente.

  3. admin says:

    Creas un archivo de configurarcion con una constante que contenga la ruta absoluta de tu sitio web de esa forma podrás hacer qu el css, javascript sea invocaco de la ruta correcta. Otra forma es via html pero base path no funciona en IE6

  4. Javier says:

    OK. gracias buscare al respecto

  5. Manuel says:

    Hola Miguel. Estoy intentando hacer el cambio a friendly urls, pero la web que intento modificar está en un servidor IIS. He leido en algun foro/blog que no va a funcionar el cambio porque mi servidor IIS no leerá las rewritteRules que comentas en tu artículo en el .httaccess. Como puedo solucionarlo? Gracias.

  6. admin says:

    Lamentablemente el .httacces es para un servidor Apache unicamente sin embargo IIS tiene su propio module rewrite hay que instalar el dll IsapiRewrite4.dll y tendrías que revisar la documentación ya que funciona un poco distintas las reglas

  7. daniel says:

    Hola tengo este problema, en un sitio modular, tengo una de las páginas que necesita paginación entonces le hago esto:

    Options +FollowSymLinks
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)/(.*)$ index.php?modulo=$1&cur=$2 [L]
    RewriteRule ^(.*)$ index.php?modulo=$1 [L]

    Con el primer RewriteRule, que es el que contiene el paginado, se me arruina todo, la página aparece como que no existe.
    Si me pueden dar una ayuda les agradezco.

  8. GASPAR says:

    Necesito ayuda para crear una friendly url no tengo ni idea soy autodidacta pero esto se me queda lejos…una ayuda que sea sencilla. No se lo que tengo que hacer.
    Gracias.

  9. PHP: friendly url | Miguel Manchego says:

    [...] había escrito sobre el funcionamiento de friendly url pero aún hay muchos que están en duda sobre su funcionamiento así que voy a aprovechar de hacer [...]

Leave a Reply

Your email address will not be published. Required fields are marked *

*


+ six = 7

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>