
En tiendas online y webs con filtros es muy habitual encontrarse con parámetros de ordenación como ?orderby=, ?sort= o ?filter= que generan URLs indexables que no deberían estarlo. A veces la plantilla o el CMS no permite gestionarlo desde el código, y la única opción es hacerlo desde el servidor.
Este artículo surge de una pregunta de Andrea Domínguez, especialista SEO y alumna de mi Máster de SEO Técnico, en nuestra comunidad de Discord. Y como es un problema muy común, he decidido desarrollarlo aquí.
Cuando tienes una tienda online, es habitual tener URLs como:
tienda.com/categoria/ (URL canónica)tienda.com/categoria/?orderby=pricetienda.com/categoria/?orderby=datetienda.com/categoria/?orderby=popularityEl contenido es prácticamente el mismo (los mismos productos), solo cambia el orden. Google puede interpretarlo como contenido duplicado, y además estás desperdiciando crawl budget en URLs que no aportan valor al posicionamiento.
Antes de saltar al noindex, hay que plantearse si realmente es la mejor opción. En la mayoría de casos, la mejor implementación para parámetros que ordenan contenido es un canonical, no un noindex.
¿Por qué? Con el noindex estamos diciendo "no indexes esta página", pero no estamos ofreciendo ninguna alternativa. Con el canonical, le decimos a Google "esta página es una variante de esta otra, prefiero que indexes la principal".
<link rel="canonical" href="https://tienda.com/categoria/" />
Este canonical debería estar en todas las variantes con parámetro, apuntando siempre a la URL limpia.
Este es un tema polémico en la comunidad SEO. Hay quien dice que el noindex se "traspasa" por el canonical y que no son compatibles. Yo no estoy de acuerdo con esa interpretación.
John Mueller ha confirmado que se puede utilizar noindex y canonical a la vez. Mi recomendación: si vas a poner noindex, pon también el canonical. El canonical transmite "prefiero que indexes esta otra URL" mientras que el noindex es más explícito con "no me indexes". Son complementarios.
No todos los SEOs estarán de acuerdo con esta solución, pero es la que yo implemento en mis proyectos.
Si has decidido que necesitas el noindex y solo puedes implementarlo mediante el servidor (porque la plantilla no te deja tocarlo desde el código), la solución es el x-robots-tag.
En mis artículos sobre x-robots hablo de cómo hacer estas configuraciones para archivos y URLs específicas. Sin embargo, para parámetros la lógica es similar pero usando una variable diferente: en vez de %{REQUEST_URI} usamos %{QUERY_STRING}.
<IfModule mod_headers.c>
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{QUERY_STRING} orderby=
RewriteRule .* - [E=NOINDEX_PARAM:1]
</IfModule>
Header set X-Robots-Tag "noindex, follow" env=NOINDEX_PARAM
</IfModule>
Este código hace lo siguiente:
Si tienes varios parámetros problemáticos (orderby, sort, filter, etc.):
<IfModule mod_headers.c>
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{QUERY_STRING} (orderby|sort|filter)=
RewriteRule .* - [E=NOINDEX_PARAM:1]
</IfModule>
Header set X-Robots-Tag "noindex, follow" env=NOINDEX_PARAM
</IfModule>
Si quieres ser más agresivo y poner noindex a cualquier URL que tenga parámetros:
<IfModule mod_headers.c>
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{QUERY_STRING} .
RewriteRule .* - [E=HAS_QUERY:1]
</IfModule>
Header set X-Robots-Tag "noindex, follow" env=HAS_QUERY
</IfModule>
location / {
if ($args ~ "orderby=") {
add_header X-Robots-Tag "noindex, follow" always;
}
}
# Para varios parámetros
location / {
if ($args ~ "(orderby|sort|filter)=") {
add_header X-Robots-Tag "noindex, follow" always;
}
}
Esta información la puedes ampliar en mi artículo sobre redirección de parámetros en htaccess.
Ahora bien, si el parámetro no cumple ninguna funcionalidad real en tu web o simplemente quieres que deje de existir, la solución más limpia es eliminarlo mediante redirección 301.
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{QUERY_STRING} orderby
RewriteRule (.*) $1 [R=301,L,QSD]
</IfModule>
El flag QSD (Query String Discard) es clave: elimina el query string de la URL de destino.
Con esto, cualquier acceso a /categoria/?orderby=price redirigirá automáticamente a /categoria/.
Para más detalle sobre esta técnica, tengo un artículo específico sobre cómo eliminar parámetros desde el servidor.
Esta es una duda muy común. La respuesta corta: no, en este caso no importa si usas CDN.
El CDN (Cloudflare, Akamai, etc.) solo es relevante cuando hablamos de archivos estáticos que están alojados en los servidores del propio CDN, como imágenes, CSS o JavaScript.
Si no es para una configuración de archivos multimedia, no importa para el servidor si se utiliza CDN o no. Solo importa con esos archivos multimedia, ya que el servidor que se utiliza para esas imágenes o archivos es el propio del CDN.
En este caso estamos hablando de URLs HTML que se procesan en tu propio hosting. El CDN simplemente actúa como proxy/caché, pero la configuración de headers se hace en tu servidor de origen.
Si quisieras hacer noindex a imágenes servidas directamente desde el CDN, entonces sí necesitarías configurarlo allí (en Cloudflare sería mediante Transform Rules o Workers).
Este es un error muy común y crítico. Si tienes estas URLs bloqueadas en el robots.txt, todo lo anterior no servirá de nada.
¿Por qué? Porque si Google no puede rastrear la URL, no puede ver:
La URL será no rastreable pero igualmente indexable. Google puede indexar URLs sin rastrearlas si hay suficientes enlaces apuntando a ellas.
Esto es algo que explico en detalle en mi artículo sobre métodos eficaces de desindexación.
Después de implementar cualquiera de estas soluciones, verifica que todo está correcto:
Puedes usar curl desde terminal:
curl -I "https://tutienda.com/categoria/?orderby=price"
Deberías ver en la respuesta:X-Robots-Tag: noindex, follow
En las DevTools del navegador, pestaña Network, puedes ver las cabeceras de respuesta de cualquier petición.
La herramienta de Inspección de URL de Google Search Console te mostrará si Google está viendo el noindex correctamente.
Te falta mi máster. Accede a una formación avanzada que te permitirá aplicar e implementar SEO en cualquier tipo de WEB
¡Accede al Máster de SEO Técnico!