SEO

Canonical y hreflang: cómo implementarlos bien (y los errores que los anulan)

Qué hace la etiqueta canonical, qué hace hreflang, cómo combinarlos en una web multiidioma con x-default, y los errores que hacen que Google los ignore.

La etiqueta rel="canonical" indica a los buscadores cuál es la URL preferida cuando el mismo contenido es accesible desde varias direcciones. Los atributos hreflang indican qué versiones en otros idiomas o regiones existen de una misma página. No compiten: canonical consolida duplicados dentro de un idioma y hreflang relaciona equivalentes entre idiomas. Cada versión idiomática debe tener su propio canonical autorreferente y un conjunto completo de hreflang que apunte a todas las demás, incluida ella misma.

Este artículo explica cómo implementar ambas correctamente, qué papel juega x-default y qué errores concretos hacen que Google las ignore.

Qué es la URL canónica

Una misma página suele ser accesible desde varias URLs: con y sin barra final, con parámetros de seguimiento (?utm_source=...), con www y sin él, en HTTP y HTTPS. Para los buscadores son direcciones distintas. Si no les dices cuál prefieres, elegirán una por su cuenta y repartirán las señales entre todas.

<link rel="canonical"> resuelve esa ambigüedad desde el <head>:

<link rel="canonical" href="https://blog.aimran.es/es/articulos/canonical-y-hreflang-como-implementarlos/" />

Reglas básicas, según la documentación de Google:

  • Usa URLs absolutas, con protocolo y dominio.
  • Una sola etiqueta canonical por página. Si hay varias, Google las ignora todas.
  • Que apunte a una URL que devuelva 200 y sea indexable. Un canonical hacia una página con noindex o que redirige es contradictorio.
  • El canonical autorreferente (la página se señala a sí misma) es correcto y recomendable: deja claro cuál es la versión buena de forma explícita.

Google trata el canonical como una señal fuerte, no como una orden. Si el contenido de la URL canónica no se parece al de la página que la declara, puede elegir otra. Por eso el canonical no sirve para “redirigir” páginas distintas; para eso existe el 301.

Qué es hreflang

hreflang informa de que una página tiene versiones equivalentes en otros idiomas o regiones, para que el buscador muestre a cada usuario la que corresponde a su idioma. Se declara en el <head> con una etiqueta por versión:

<link rel="alternate" hreflang="es" href="https://ejemplo.com/es/guia/" />
<link rel="alternate" hreflang="en" href="https://ejemplo.com/en/guide/" />
<link rel="alternate" hreflang="x-default" href="https://ejemplo.com/es/guia/" />

Los valores usan códigos de idioma ISO 639-1 (es, en) y, opcionalmente, región ISO 3166-1 alfa-2 (es-MX, en-GB). No existe un código solo de región: hreflang="mx" es inválido.

Las dos reglas que casi todo el mundo incumple

  1. Reciprocidad. Si la página en español enlaza a la inglesa con hreflang, la inglesa debe enlazar a la española. Google lo llama “return links”; sin ellos, las anotaciones se ignoran.
  2. Autorreferencia. Cada página incluye también un hreflang hacia sí misma. El conjunto de etiquetas debe ser idéntico en todas las versiones.

x-default

x-default indica qué versión mostrar cuando ningún idioma declarado coincide con el del usuario (o cuando tienes un selector de idioma). Suele apuntar al idioma principal del sitio. No es obligatorio, pero es recomendable.

Dónde declararlo

Hay tres lugares equivalentes; elige uno y sé coherente:

  • Etiquetas <link> en el <head> (lo habitual en páginas HTML).
  • Cabecera HTTP Link: (para PDFs y otros archivos no HTML).
  • El sitemap XML, con elementos <xhtml:link> dentro de cada <url>. Es la opción más cómoda cuando hay muchas páginas, porque un generador puede mantener la reciprocidad automáticamente.

Cómo se combinan canonical y hreflang

Esta es la parte que genera más confusión. La regla es sencilla: el canonical de cada versión apunta a sí misma, y el hreflang apunta a todas las versiones.

Página canonical hreflang
/es/guia/ /es/guia/ es → /es/guia/, en → /en/guide/, x-default → /es/guia/
/en/guide/ /en/guide/ es → /es/guia/, en → /en/guide/, x-default → /es/guia/

El error grave es poner como canonical de la versión inglesa la URL española. Con eso le dices a Google que la inglesa es un duplicado de la española y que no la indexe, lo que anula el hreflang por completo. Son dos páginas distintas (idiomas distintos); cada una es canónica de sí misma.

Lista de comprobación

  1. Una sola etiqueta canonical por página, absoluta, hacia una URL 200 e indexable.
  2. El canonical de cada idioma apunta a su propia URL.
  3. hreflang con códigos válidos (idioma, o idioma-REGIÓN).
  4. El mismo conjunto de hreflang en todas las versiones, incluida la autorreferencia.
  5. x-default apuntando a la versión por defecto.
  6. Las URLs de hreflang coinciden exactamente con las canónicas (misma barra final, mismo protocolo).
  7. Si una versión deja de existir, se elimina de los hreflang de todas las demás.

Errores habituales

  1. URLs relativas en canonical o hreflang. Google recomienda absolutas; las relativas se interpretan mal con facilidad.
  2. Canonical hacia la portada en todas las páginas por un error de plantilla. Es más común de lo que parece y desindexa el sitio entero.
  3. hreflang sin return links. La causa número uno de “sin etiquetas de retorno” en Search Console.
  4. Mezclar idiomas en una URL. Si /guia/ muestra español o inglés según el navegador, no hay una URL por idioma y hreflang no puede funcionar. Cada idioma necesita su propia URL.
  5. Canonical a una URL con parámetros o sin HTTPS. Apunta siempre a la versión limpia y segura.

Cómo comprobarlo

En Search Console, la herramienta de inspección de URL muestra qué URL ha elegido Google como canónica frente a la que tú declaras. Si no coinciden, revisa contenido duplicado, redirecciones y enlaces internos: Google suele elegir la URL que más enlaces internos recibe. Para hreflang, cualquier validador que compruebe la reciprocidad entre versiones te ahorrará horas; también puedes generar las etiquetas desde una única fuente de rutas (como hace este blog) para que sea imposible que se desincronicen.

Conclusión

Canonical responde a “¿cuál de estas URLs duplicadas quieres que indexe?” y hreflang a “¿qué versiones idiomáticas existen de esta página?”. Implementa el primero como autorreferente y absoluto, el segundo como un conjunto completo y recíproco con x-default, y nunca uses canonical para unir idiomas distintos. Si puedes, genera ambos automáticamente desde la misma fuente de verdad: la mayoría de errores aparecen cuando se mantienen a mano.

Fuentes y referencias

  1. Google Search Central: Cómo especificar una URL canónica con rel="canonical" y otros métodos developers.google.com
  2. Google Search Central: Informar a Google sobre las versiones localizadas de tu página developers.google.com
  3. Google Search Central: Gestión de sitios multirregionales y multilingües developers.google.com
  4. sitemaps.org: protocolo de sitemaps sitemaps.org

Herramientas relacionadas

Herramientas gratuitas de AIMRAN Tools que funcionan en tu navegador, sin registro.

Ver todas las herramientas
Artículos de SEO