> Manuales > Editar htaccess para crear direcciones URL amigables

Si utilizamos htaccess debemos prestar especial atención a no tener dos páginas, con URLs disitintas, que tengan exactamente el mismo contenido.

Uno de los problemas que podemos encontrar derivados del uso de htaccess para crear URLs amistosas a buscadores es que se de el caso de que distintas URLs muestren exactamente las mismas informaciones.

Por lo visto, tener en un dominio dos páginas con los mismos contenidos no está bien visto por los motores de búsqueda, que pueden considerarlo una trampa encaminada a confundirle y hacerle pensar que el sitio es más grande de lo que realmente es.

¿Cómo puede ser que dos páginas tengan los mismos contenidos?

Por ejemplo, pensemos en una regla como esta:

RewriteRule ^articulos/(.+)\.php codigo/ver_articulo.php?nombre=$1

Esto quiere decir que existirán URLs como estas:

www.dominio.com/articulos/plantas-decorativas.php
www.dominio.com/articulos/plantas-medicinales.php
www.dominio.com/articulos/plantas-aromaticas.php
…

Imaginemos que alguna persona se equivoca y nos pone un enlace a un artículo que no existe:

www.dominio.com/articulos/plantas-decor.php
www.dominio.com/articulos/plantas-medicina.php

Nosotros en la página que muestra los artículos “ver_articulo.php” tendremos que comprobar si existe un artículo con ese nombre.
//tengo que ver si este articulo tiene nombre
$ssql = "select * from articulo where nombre = $nombre ";
$rs = mysql_query($ssql);
if (mysql_num_rows($rs)==0){
//es que no existe un articulo con ese nombre
echo “Error. No tenemos ese artículo”;
}


Con este código, cada vez que se escriba una URL con un error nos mostraría los mismos contenidos: el mensaje “Error. No tenemos ese artículo”. Esto es algo que pretendíamos evitar.

Para evitar mostrar en URLs que no existen realmente los mismos contenidos, una solución es hacer una redirección a una página de error.

if (mysql_num_rows($rs)==0){
//es que no existe un script con ese id
header ("location: /error_articulo.php");
exit();
}


Así, cuando alguien se equivoque al componer la URL se mostrará un mensaje de error, pero para el buscador todos los mensajes se ofrecen desde la misma página web.

También podemos hacer que PHP envíe al navegador del usuario una cabecera con el error de página no encontrada (error 404 del HTTP).

header("HTTP/1.0 404 Not Found");

Son dos posibilidades, cada cual puede utilizar la que desee, aunque es posible que la del error 404 sea más útil y elegante.

Miguel Angel Alvarez

Fundador de DesarrolloWeb.com y la plataforma de formación online EscuelaIT. Com...

Manual