No tener dos URL con los mismos contenidos

  • Por
  • Apache
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.

Autor

Miguel Angel Alvarez

Miguel es fundador de DesarrolloWeb.com y la plataforma de formación online EscuelaIT. Comenzó en el mundo del desarrollo web en el año 1997, transformando su hobby en su trabajo.

Compartir

Comentarios

gerardo

19/5/2009
como procesar las variables por htaccess
hola me duda es por ejmplo forme esta url
www.midominio.com/categoria/titulo.html

asi esta en mi htaccess
RewriteRule ^(.+).html$ codigo/muestra_articulo_htaccess.php?id=$1


en mi codigo php recivo la variables como normalmente las recive uno por get?

osea algo asi echo $_GET['id'];

saludos
espero sus comebntarios

kapry

04/8/2009
RTA: como procesar las variables por htaccess
si no estoy equivocado para
www.midominio.com/categoria/titulo.html

seria algo asi:

RewriteRule ^categoria/(.+).html codigo/muestra_articulo_htaccess.php?id=$1

Proba y despues comentanos que tal te fue

kapry

04/8/2009
Esto se puede conciderar urls con el mismo contenido?
# esto da http://midominio.com/usuario/kapry_ar.php
RewriteRule ^usuario/(.+).php index.php?user=$1 [L]
# esto da http://midominio.com/usuario/kapry_ar.html
RewriteRule ^usuario/(.+).html index.php?user=$1 [L]
# esto da http://midominio.com/usuario/kapry_ar.htm
RewriteRule ^usuario/(.+).htm index.php?user=$1 [L]
# esto da http://midominio.com/usuario/kapry_ar
RewriteRule ^usuario/(.+) index.php?user=$1 [L]

soytanguapo

30/12/2010
id en la url amigable
alguien sabe de casualidad como puedo quitar el id de mi url amigable

ejemplo
http://servidor/pagina/project8_nombre
asi la tengo, pero quiero que salga asi
http://servidor/pagina/project_nombre

pero ese numero es un id de un producto no se si la pueda quitar de la url ??

Carlos

20/3/2014
redireccion
por favor alguien me puede decir como es el archivo .htaccess que tengo que publicar para direccionar un sitio.com a www.sitio.com

gracias

dragos2yo

09/5/2015
contenido duplicado
Hola,
Yo redirecciono todas las peticiones al index.php de la siguente manera:
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-1
RewriteRule ^(.+)$ index.php?url=$1 [QSA,L]

en my caso el index gestiona la pagina completa, cargado controladore, modelo, vista, sesiones y otras cosa, pero al escribir explicitamente dominio.com/index.php funcciona igual que el dominio.com. Esto quere decir que hay dos paginas distintas con el mismo contenido. Me gustaria que al escribir dominio.com/index.php se redireccione a dominio.com pero al mismo tiempo ejecutar el index.php.
Espero que haya solucion, Gracias

dragos2yo

09/5/2015
contenido duplicado SOLUCIONADO
resuelto de la siguente manera
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}s(.*)/index.php [NC]
RewriteRule ^ %1 [R=301,L]

Gracias.