URLs amigables: evitar bromas con los slugs



En el mundo del SEO una de las normas de optimización de webs es poner palabras clave en las URL dinámicas, como añadido, o a ser posible con re-escritura.

Es decir si tenemos un producto en la URL:

tienda.es?producto=141

Se puede añadir un slug:

tienda.es?producto=141&slug=rizador-de-pelo

O mediante re-escritura (en Apache con el mod-rewrite):

tienda.es/productos/141/rizador-de-pelo

O mediante reescritura, simulando el nombre de un archivo html:

tienda.es/productos/rizador-de-pelo_141.html

En estos casos, lo importante es el 141, el id del artículo para cargarlo de base de datos y mostrarlo correctamente, lo de “rizador-de-pelo” es un adorno para ayudar a google a indexar la página del producto. Y como es un adorno, normalmente no le hacemos caso, así que si alguien pone un enlace como el siguiente a nuestra tienda:

tienda.es/productos/birria-de-rizador_141.html

El enlace funcionará, y todo el rato que el visitante esté viendo el producto en la barra de direcciones se verá eso de birria de rizador. Puede parecer que nadie va a molestarse en hacer eso, pero he visto este funcionamiento incluso en páginas web que están muy expuestas a los enemigos y la mala baba como pueden ser institucionales, de partidos políticos o movimientos sociales controvertidos. ¿Qué imagen da la página oficial de un alto cargo que se puede enlazar poniendo cualquier burrada?

Y no solo es la burrada en sí, aunque fuera por error, cambiando un par de letras, si dos direcciones llevan al mismo contenido, google lo verá como contenido duplicado y penalizará el posicionamiento de la página.

¿Solución? El primer paso es detectar cuando llegan a la página con una URL alterada. Accedemos a la dirección de entrada con las variables que nos da el entorno (por ejemplo en php podemos usar $_SERVER['REQUEST_URI']), cargamos el producto de base de datos según el id de la URL, y ahora podemos volver a crear el enlace con el que nosotros enlazamos la página y comparar. Por ejemplo:

Entran con: tienda.es/productos/birria-de-rizador_141.html

Cargamos el producto 141 y creamos el enlace que nosotros pondríamos (o enlace canónico) con el slug que cargamos de base de datos:

tienda.es/productos/rizador-de-pelo_141.html

Al comparar vemos que las direcciones no son igual, así que estamos ante el caso de entrada mediante una URL modificada, no debemos mostrar la página normalmente.

¿Y qué debemos hacer? Pues depende del caso. A lo mejor en el caso de venta de producto lo mejor es redirigir con una página 301 al enlace bueno, de esa manera da igual el enlace de entrada se acaba viendo el producto y a lo mejor conseguimos una venta, pero no verá en la barra de direcciones el enlace modificado, sino el bueno al que hemos redirigido. En el caso de una institución, que no quiera que bajo ningún concepto se enlacen sus páginas mediante URLs llenas de insultos, podemos dar un 404. De esa manera google no dará por válido ese enlace y evitamos el efecto de que ante muchos enlaces perversos, se acabe poniendo en primeras posiciones de google esa página para una búsqueda llena de insultos.

En cualquiera de los dos casos habríamos evitado el problema del contenido duplicado.