Hreflang es un atributo HTML que informa a los motores de búsqueda qué páginas de un sitio web son traducciones entre sí y para qué idioma o región está destinada cada versión. En pocas palabras: es una forma de decirle a Google y Yandex «esta página está en ruso para Rusia, y esta otra está en alemán para Alemania, no las muestres una en lugar de la otra».
Sin hreflang, un sitio web multilingüe deja la elección de la versión al motor de búsqueda. Si las páginas en diferentes idiomas contienen la misma estructura y significado, el motor de búsqueda puede considerarlas duplicadas y dejar solo una en los resultados, generalmente no la que necesita un usuario específico. Un hreflang correctamente configurado elimina esta incertidumbre y separa las versiones por segmentos de idioma y región en los resultados.
Qué es hreflang y por qué es necesario
hreflang es un atributo de enlace rel="alternate" que indica al motor de búsqueda qué URL son variantes lingüísticas o regionales de la página actual.
Sin hreflang, el motor de búsqueda puede:
- Mostrar la versión rusa a usuarios de Alemania
- Considerar las traducciones como contenido duplicado y fusionarlas en un solo documento
- No mostrar versiones regionales en los resultados de búsqueda locales correspondientes
Con hreflang, el motor de búsqueda sabe: esta es la página en alemán para Alemania, esta en francés para Francia, esta en inglés para todos los demás. Con él, se pueden establecer diferentes versiones para un mismo idioma, pero para diferentes regiones, así como especificar varios idiomas para un mismo país, por ejemplo, inglés y francés para Canadá (en-CA y fr-CA). Esto es importante para la localización: en Canadá, incluso en francés, los precios se indican en dólares canadienses, y en Francia, en euros.
Cómo se ve hreflang
El atributo se añade a la sección <head> de cada página:
<link rel="alternate" hreflang="ru" href="https://mysite.com/ru/about/" />
<link rel="alternate" hreflang="en" href="https://mysite.com/en/about/" />
<link rel="alternate" hreflang="de" href="https://mysite.com/de/about/" />
<link rel="alternate" hreflang="x-default" href="https://mysite.com/en/about/" />Partes clave:
- rel="alternate" — indica que esta es una versión alternativa de la página
- hreflang="ru" — código de idioma según ISO 639-1
- href — la URL absoluta completa de la versión (con protocolo y dominio)
- hreflang="x-default" — la versión predeterminada si ninguna otra es adecuada
Tabla: códigos de idioma y región frecuentes
Formato del atributo: idioma o idioma-PAÍS. Aquí están los códigos con los que más a menudo se cometen errores:
El código de país solo se añade si el contenido para un idioma difiere en distintas regiones.
- Solo idioma — hreflang="en" — para todos los usuarios de habla inglesa, independientemente del país
- Idioma + país — hreflang="en-US" para EE. UU., hreflang="en-GB" para el Reino Unido — por ejemplo, precios en dólares frente a libras
- Si el contenido es el mismo para todos los hablantes de un idioma, basta con el código de idioma sin el país
Reciprocidad: la regla que más se incumple
Cada página debe contener hreflang para todas las versiones de idioma, incluida ella misma (autorreferencia). Esta es una regla crítica: si tienes tres idiomas, cada versión debe enlazar a las tres, incluyéndose a sí misma. Esto crea un conjunto cerrado de enlaces, a través del cual el motor de búsqueda entiende la relación entre las versiones.
Correcto: la página en ruso tiene enlaces a la alemana, la inglesa y a sí misma. La alemana, a la rusa, la inglesa y a sí misma. La inglesa, a la rusa, la alemana y a sí misma.
Incorrecto: las versiones en ruso y alemán tienen enlaces a la versión en inglés, pero la versión en inglés no tiene enlaces de retorno. El motor de búsqueda considera esta implementación incorrecta y puede ignorar todo el conjunto.
<!-- Ejemplo de un conjunto correcto de hreflang -->
<link rel="alternate" hreflang="de" href="https://mysite.com/de/about/" />
<link rel="alternate" hreflang="ru" href="https://mysite.com/ru/about/" />
<link rel="alternate" hreflang="en" href="https://mysite.com/en/about/" />
<link rel="alternate" hreflang="x-default" href="https://mysite.com/en/about/" />x-default: versión para el resto
hreflang="x-default" — un valor especial para la página que se muestra cuando ninguna otra versión es adecuada para el usuario. Por lo general, esta es la versión en el idioma principal del sitio (más a menudo ruso o inglés).
Si tienes versiones rusa y kazaja sin una versión en inglés, x-default se puede especificar para una de ellas, o no usarse en absoluto. Este no es un atributo obligatorio, pero Google lo recomienda.
Opciones de implementación
Además de las etiquetas en <head>, hreflang se puede especificar:
A través de encabezados HTTP. Para PDF y otros recursos no HTML, esta es la única opción.
A través del mapa del sitio. En lugar de atributos en cada página, un solo mapa del sitio en el que cada enlace enumera las variantes de esa misma página en otros idiomas. Conveniente para sitios grandes del lado de Google.
Todas las variantes son equivalentes para Google; elija la que sea más fácil de mantener. Por cierto, Multify añade automáticamente las metaetiquetas necesarias tanto al código HTML de las páginas como al mapa del sitio.
Una diferencia importante: Google y Yandex procesan hreflang de manera diferente
La mayoría de las guías de hreflang en ruso están escritas solo con Google en mente, y para los sitios orientados a Runet y la CEI, esto es solo la mitad del panorama.
- Google admite los tres métodos de marcado: etiquetas HTML en <head>, encabezados HTTP y hreflang en el Sitemap XML.
- Yandex ha dejado de admitir hreflang a través de XML Sitemap. La única forma fiable de especificar versiones de idioma y región para Yandex es mediante etiquetas HTML <link rel="alternate" hreflang="..."> directamente en el <head> de cada página.
Conclusión práctica: si tienes una audiencia en Yandex (Rusia, Kazajistán, Bielorrusia), no confíes en la implementación del sitemap; funcionará para Google, pero no tendrá efecto en Yandex. La etiqueta en <head> es la única opción que funciona igual en ambos sistemas.