en: Negocio| Programacion
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.
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…
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 =.
http://www.tusitio.com/secciones.php?id=21&texto=Noticia
http://www.tusitio.com/secciones/id/21/texto/Noticia
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.
Voy a explicar dos técnicas para llevar a cabo esta mejora en nuestras páginas, ambas funcionan con PHP-Apache.
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”.
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”;
}
?>
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
11 Respuestas a Urls amigables
Anónimo
24 de Agosto de 2006 a las 4:25 pm
Quí© solución hay para páginas .asp?
Slds
Clo
Anónimo
15 de Noviembre de 2006 a las 3:43 pm
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.
Anónimo
28 de Agosto de 2007 a las 10:13 pm
Thank you!
http://fishingal.freehostia.com/1/3/alaska-alaska-fishing+-salmon-sockeye.php “> alaska alaska fishing+ salmon sockeye
Anónimo
8 de Septiembre de 2008 a las 10:22 pm
Páginas asp
Enviado por Anónimo el Jue, 08/24/2006 – 20:25.
Quí© solución hay para páginas .asp?
Slds
Clo
——————————————-
Usar PHP AJAJJAAJAJAJAJAJAJAJAJAJAJAJAJAJAJAJAJAJAJAJAJAJAJAJAJAJA
Anónimo
2 de Julio de 2008 a las 12:57 pm
Para paginas ASP solo queda JODEEROS POR USAR SOFTWARE PRIVATIVO KABRONES!!!
MUAHAHAHAHAAHAHAHAHAHAA
Anónimo
23 de Noviembre de 2008 a las 8:14 pm
Para poder usar esto en páginas ASP solo hay que
Actualizar a
Servidores con
PHP
A la mierda con el Software Privado, ASP no tiene y nunca tendrá el soporte que tiene PHP.
La programación ASP es muy respetable pero sois 10 por cada 5000 de nosotros, actualizaros a PHP o fracasar en vuestro trabajo.
juan
17 de Diciembre de 2009 a las 2:20 pm
ASP lo mejor k hay
kabrones putos los de PHP
vlguzman
19 de Diciembre de 2009 a las 6:19 pm
Gracias por el tutorial. No fue fácil entender la parte de las expresiones regulares de htaccess pero apliqué lo aprendido en http://www.puromotor.cl y logré el objetivo que estaba buscando. De todas maneras les doy un consejo: tengan cuidado al simular directorios porque si la página tiene rutas relativas (por ejemplo a los archivos css o js) no encontrará los archivos. Saludos.
kike314
1 de Febrero de 2010 a las 11:22 pm
Quisiera saber si hay manera de hacer que cualquier dirección:
http://www.mipagina.com/fotos.php
quede en
http://www.mipagina.com/fotos
digamos:
http://www.mipagina.com/videos.php -> http://www.mipagina.com/videos
(eliminar el .php) del url… se puede hacer?
Un saludo!
Zentido
3 de Marzo de 2010 a las 4:38 pm
@kike314 claro que se puede… aqui un pequeño ejemplo:
RewriteRule ^Musica$ Musica.php [L,NC,QSA]
bueno y para los que quieran reescribir urls en asp aqui el link:
http://www.locualo.net/programacion/reescritura-urls-asp-net/00000022.aspx
en lo particular recomiendo el uso de software libre como php
Saludos !
Valde
11 de Marzo de 2010 a las 10:03 am
Para los que quieren hacer cosas con ASP y URL Amigables, hay opciones sin tener que comprar el objeto equivalente al mod_rewrite. en http://www.petralinkfactory.com/2008/08/24/url-amigables-y-iii-asp/ puedes ver un ejemplo de cómo conseguí hacerlo.
La cosa es que esta solución es muy sencilla, es utilizar el error 404, al igual que se hace en php, pero como no tengo el mod_rewrite, solo hay que programar las reglas en código.
Por cierto a los mal educados en contra de los Sistemas Privativos, hay clientes que piden que se desarrolle en ello, no hay que insultar, ya que si es un requisito que se hace, dejar el trabajo y no cobrar. Abrid la mente!!!