De todos es conocido que los sitios dinámicos son los más populares hoy en día, desafortunadamente la manera más sencilla de pasar información de una página a otra es a través de cadenas en la URL.
Problema de URLs largas
El problema está en que 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...
Solución: URLs amigables
La solución está en las URLs amigables, en pocas palabras dejar de ser invisible para muchos buscadores, estas URLS basicamente sustituyen los carácteres & ? y =.
Ejemplo:URL larga
http://www.tusitio.com/secciones.php?id=21&texto=Noticia
Ejemplo:URL amigable
http://www.tusitio.com/secciones/id/21/texto/Noticia
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).
Por todo esto, considero que una web que desee tener presencia en los principales buscadores debe utilizar urls amigables.
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"
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
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
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
Enlaces Relacionados
- Urls accesibles
- Buenas razones por las que utilizar urls amigables
- El poder de Google Gears
- 10 cosas básicas antes de que Google te indexe
- Actualización de Google Webmasters
- Nueva actualización del PageRank
- ¿Qué ocurre cuando buscamos en Google?
- ¿Cómo ordenar datos?
- El futuro de PHP
- ¿Qué es iGoogle?





alaska alaska fishing+ salmon sockeye
Thank you!
http://fishingal.freehostia.com/1/3/alaska-alaska-fishing+-salmon-sockey... "> alaska alaska fishing+ salmon sockeye
No me funciona
Hola,
siguiendo las instrucciones no me funciona, el .htaccess lo he puesto en un directorio con las mismas reglas que has puesto(estoy en local y sí que tengo habilitado el mod_rewrite), la url es:
http://localhost/prueba/index/param1,1/param2,2
Me puedes decir quí© es lo que hago mal
Saludos.
Páginas asp
Quí© solución hay para páginas .asp?
Slds
Clo
Enviar un comentario nuevo