Buenas razones por las que utilizar urls amigables

Mucho se escucha sobre las famosas urls amigables y muchas veces los desarrolladores se plantea implementar en su sitio las urls amigables.

¿Por qué deberias poner urls amigables en tu sitio?

Pues hay varias razones pero lo que habrá que plantearse es si estos motivos son suficientes como para rediseñar tu sitio y adaptarlo al uso de urls amigables.

1. Marketing Viral

El marketing viral y la publicidad viral son términos que se utilizan para explicar aquellas tácticas que utilizan redes sociales para producir incrementos exponenciales en el conocimiento de tu sitio.

Obviamente es mucho mas sencillo recordar http://www.tufuncion.com/linea_comandos que http://www.tufuncion.com/node?id=17.

Del mismo modo será más sencillo recordar una url descriptica cómo la escrita anteriormente.

2. Optimización

La mayoría de los buscadores (pocas excepciones como Google) no indexa cualquier página que tenga símbolos raros (?,=,&) en la url.

Por eso muchas webs dinámicas no son correctamente indexadas, y obviamente no es bueno que no te indexen.

Efecto del cambio

El efecto que esto provocó en Google fue enorme, el buscador empezó a pasearse como Pedro en su casa por el Weblog e indexó casi todo su contenido. Pasamos de tener unas 5,000 páginas indexadas a más de 12,000… no me pregunten ¿por qué?, pero fue a consecuencia del cambio (de esto no hay duda).

Otro efecto positivo (si el afán es el posicionamiento en buscadores), fue la mayor atracción de visitantes pasajeros (no es mi intención hablar de estadísticas, pero aproximadamente hubo un incremento del 10% al 20% de tráfico por Google).

Baluart.net

3. Imagen de tu marca

La imagen de tu sitio sera mucho más transparentes aquellos id seran convertidos en palabras que diran en cada momento algo interesante sobre la página que albergan.

Es una de las principales características de las webs 2.0 lo que dice mucho sobre el futuro de esta técnica, está claro que si el objetivo de un buscador tan importante como Google es organizar la informacion del mundo terminarán premiando a aquellos que les faciliten el trabajo, CMS cómo Drupal, Joomla, WordPress, Moveable Type utilizan está técnica obteniendo unos resultados geniales.

Hacer URLs amigables

Voy a explicar dos técnicas para llevar a cabo esta mejora en nuestras páginas, ambas funcionan con PHP-Apache.

Método 1: PATH_INFO

Si echas un ojo a la barra de direcciones de webs cómo Sitepoint veras una URL como esta:

http://www.sitepoint.com/article/flex-2-internet-applications

Sitepoint utiliza este método para hacer sus URLs amigables.

Esta solución es la menos avanzada tecnologicamente pero la que requiere de menos recursos, va para aquellos que tienen una cuenta de hosting compartido o un servidor gratuito, habrá que colocar este script en la cabecera de todas nuestras páginas (recomendable el uso de include).

$var_array = explode(“/”,$PATH_INFO);
$num_param = count($var_array );

if($num_param % 2 == 0) {

$var_array [] = ”;

$num_param++;

}

for($i=1; $i<$num_param; $i+=2) {

$$var_array [$i] = $var_array [$i+1];

$total=$total + $$var_array [$i];

}

La clave de su funcionamiento está en que toma los números pares como variables y los impares cómo los valores.

Tomemos cómo ejemplo esta url:

http://www.tusitio.com/articulo.php/id/333/noticia/21&#8221;

Primeto separamos las diferentes partes en variables, usando la funcion explode de php.

Una vez realizado esto, obtendremos el siguiente resultado:

$var_array[0] = “articulo.php”

$var_array[1] = id

$var_array[2] = 333

$var_array[3] = noticia

$var_array[4] = 21

Podríamos renombrar los $var_array[1] por nombres más descriptivos como $id o $noticia y hacer una consulta a la base de datos con está información.

Si vas a utilizar este método asegurate de tener controlado el log de tu servidor para evitar las molestas “arañas”.

Método 2 .HTACCESS

Este método implica el uso del archivo .htaccess, si eres nuevo en esto, te puedo decir que es un archivo que se utiliza para administrar las opciones de acceso en el directorio en el que se encuentra alojado.

En primer lugar asegurate de tener activado el mod_rewrite esencial para el uso de este método, edita un fichero y pega este código:

phpinfo();

?>

Una vez comprobado que el mod_write está activado podemos pasar a configurar nuestro .htaccess:

Options +FollowSymLinks

RewriteEngine on
Rewriterule ^(.*)/(.*),(.*)/(.*),(.*)/$ $1.php?$2=$3&$4=$5

Rewriterule ^(.*)/(.*),(.*)/$ $1.php?$2=$3

En las dos primeras líneas comprobamos el correcto funcionamiento del mod_rewrite en el Apache (si esto no funciona vuelve al paso anterior y compruébalo).

En las líneas siguientes se establecen una serie de reglas que nos permitirán transformar nuestras URLs.

Analizemos la regla: Rewriterule ^(.*)/(.*),(.*)/(.*),(.*)/$ $1.php?$2=$3&$4=$5

Los valores precedidos por el símbolo dólar ($) reemplazan a los (.*) de las URL amigables.

Rewriterule ^(.*)/(.*),(.*)/(.*),(.*)/$ $1.php?$2=$3&$4=$5

Supongamos que tenemos esta url:

./index.php?seccion=coches&id=12345

obtendremos…

./index/seccion,coches/id,12345/

Por lo tanto nos quedamos con el nombre del script libre de extensión, y transformamos los valores en subcarpetas.

Sube el .htaccess y comprueba que todo funciona correctamente, una vez hecho esto edita todas las reglas que necesites.

Por último falta revisar nuestro antiguo código, tomando como comienzo que el resultado de la consulta a la base de datos esta en $rs nuestro código viejo sería:

while($row = @ mysql_fetch_array($rs)){

$category = $row[“category”];

$category = URLencode(htmlentities($category,ENT_QUOTES));

$subject= $row[“subject”];

$subject = URLencode(htmlentities($subject,ENT_QUOTES));

/*format for following HTML result
http://www.mysite.com/main.php?category=books&subject=biography

*/

echo “<‘a href=\”http://www.mysite.com/main.php?

category=$category&subject=$subject\”>”;

echo “$row[description]
\n”;
}

?>

Y nuestro código para URLs amigables quedaría:

while($row = @ mysql_fetch_array($rs){

$category = $row[“category”];

$category = URLencode(htmlentities($category,ENT_QUOTES));
$subject= $row[“subject”];

$subject = URLencode(htmlentities($subject,ENT_QUOTES));

/*format for the URL rewrite is as follows

http://www.mysite.com/type$category-$subject.htm

*/

echo “<‘a href=\”http:/www.mysite.com/type$
category-$subject.htm\”>”;

echo “$row[description]
\n”;

}

?>

Enlaces interesantes

Cómo consejo final conviene antes de comenzar conocer más sobre el uso del mod_rewrite en Apache.

SitePoint: Search-Engine Firendly Urls

Baluart.net

Devarticles: Make Dynamic URLs

Foro: Uso de URLs amigables