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.
