urls amigables con categorias y id

En este articulo vamos a explicar como configurar nuestra pagina para que en lugar de tener una url asi:

www.nuestrapagina.com/archivo.php?id=3
o
www.nuestrapagina.com/buscar.php?categoria=gafas

tengamos una url amigable para los buscadores y amigable tambien para el usuario final tipo estas:

www.nuestrapagina.com/gafas/pasta-negras-de-sol_3.html


Antes que nada debes saber que para poder tener las url amigables necesitas configurar el archivo .htaccess y el script (en este caso php) que capturara las variables de categoria e id.
No necesias saber ni que es ese archivo ni que hace, solo copiar el codigo que mas tarde te dare, y entender el funcionamiento de ese codigo. Ten en cuenta que para ver los resultados deberas subir los dos archivos al servidor, si solo subes uno o la redireccion o la captura de los datos no funcionaran.

Codigo para el .htaccess

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)/([^/]+).html$ producto.php?c=$1&p=$2 [L]
RewriteRule ^([^/]+)/$ buscar.php?c=$1 [L]
</IfModule>

Como podeis ver las 2 lineas que nos interesan son las que pone RewriteRule:

-La primera nos aseguramos que al estar delante sera la que se ejecute si recibe el parametro de producto “p=$2″, redirecionara a nuestro script producto.php, desde el cual tambien podremos utlizar la variable “c=$1″ que nos indicara la categoria para un mejor titulo, keyword y descripcion.

-La segunda linea le indica que si solo viene con la variable “c=$1″ lo redirecione a nuestro script buscar.php y asi facilmente podremos utlizar la variable enviada por ejemplo “www.nuestrapagina.com/gafas/” en una consulta sql para listar todos los productos de la categoria gafas.

codigo para producto.php

<?php
if(@$_GET['p']){
		$id = explode("_", $_GET['p']);    //aqui separamos el id del titulo
		if(!is_numeric($id[1])) die('Opcion no permitida');     //si no es numerico ... algo falla
		$sql = "Select *  from productos where id=".$id[1];
		$res = mysql_query($sql) or die('Producto erroneo '.$id[1]);
		$row = mysql_fetch_row($res);
	}
	else{
		die( 'No has selecionado ningun producto');  // Si llega aqui algo no ha ido bien
	}

//aqui deberiamos comprobar la categoria ($_GET['c']) que en este caso cada uno que se lo haga como quiera
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title><?php echo $_GET['c']." ".$row['1']; ?></title>// ayudamos al posicionamiento
<meta name="description" content="<?php echo $_GET['c']." ".$row['1']; ?>"/> //ayudamos a la descripcion
<meta name="keywords" content="<?php echo $_GET['c']." ".$row['1']; ?>"/> //ayudamos a las keywords

el resto queda a gusto del consumidor

codigo de buscar.php

<?php
if(@!$_GET['c']){
		die("Error");
	}
	else{
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Comprar <?php echo $_GET['c']; ?> por internet</title>// ayudamos al posicionamiento
<meta name="description" content="Comprar <?php echo $_GET['c']; ?> por internet"/> //ayudamos a la descripcion
<meta name="keywords" content="Comprar <?php echo $_GET['c']; ?> por internet"/> //ayudamos a las keywords

como es normal falta cerrar algunas llaves etc pero eso ya lo dejo a cada uno.




Deja un comentario