Cuatro reglas que mantienen el conjunto interpretable
Hreflang es un grupo de anotaciones, por lo que los errores de un lado pueden afectar la forma en que Google interpreta la relación. Google dice que los enlaces de retorno faltantes o las anotaciones no válidas pueden ignorarse o interpretarse incorrectamente; no promete que un error anule siempre todo el grupo.
- Completo: cada versión del grupo lista a todas las demás.
- Mutuo: si X apunta a Y, Y debería apuntar nuevamente a X. La falta de enlaces de retorno puede hacer que las anotaciones se ignoren o se interpreten incorrectamente.
- Autorreferenciado: cada página se lista a sí misma junto a las otras.
- Válido: los códigos deben leerse como códigos reales de idioma y región.
La regla de mutualidad es la que atrapa a los equipos, porque hreflang describe relaciones entre páginas en lugar de una propiedad de una página de forma aislada. Implemente juntos los enlaces de retorno correspondientes para que cada relación publicada esté completa cuando Google rastree cualquiera de los lados.
Dónde poner las anotaciones
Hay tres ubicaciones disponibles y son equivalentes en efecto. Elige una y úsala en todas partes: mezclarlas por el sitio es como acaban los conjuntos declarados a medias.
| Método | Mejor para | Ojo con |
|---|---|---|
| Elementos link en HTML | Sitios pequeños y medianos | El peso de la página con muchas versiones |
| Cabeceras HTTP | PDF y otros archivos no HTML | Los límites de tamaño de cabecera en conjuntos grandes |
| Entradas de sitemap | Sitios grandes, muchos idiomas | Mantenerlas sincronizadas con las páginas |
<link rel="alternate" hreflang="en" href="https://example.com/guide/" />
<link rel="alternate" hreflang="de" href="https://example.com/de/guide/" />
<link rel="alternate" hreflang="pt-br" href="https://example.com/pt-br/guide/" />
<link rel="alternate" hreflang="x-default" href="https://example.com/guide/" /> Fíjate en que la página en inglés del ejemplo se lista a sí misma. Esa es la autorreferencia, y su ausencia es con diferencia el defecto más común en implementaciones por lo demás cuidadosas: porque parece redundante y a cualquiera que ordene la plantilla le da aspecto de error.
Códigos, y los que no existen
El idioma es ISO 639-1. Opcionalmente puede seguirle un guion y una región ISO 3166-1 Alpha 2. Una región sola nunca es válida: no hay manera de decir «esta página es para Canadá» sin decir en qué idioma está.
| Código | Veredicto | Por qué |
|---|---|---|
| es | Válido | Solo idioma: español, cualquier región |
| es-MX | Válido | Español tal como se escribe para México |
| MX | Inválido | Región sin idioma |
| uk | Válido, pero no es el Reino Unido | uk es ucraniano; el Reino Unido es GB |
| eu | Inválido como región | La UE no es un código de país |
| en-UK | Inválido | El código de país del Reino Unido es GB |
Para qué sirve x-default
x-default recoge los idiomas que no listaste. Es el respaldo para un visitante cuyo idioma no coincide con ninguna de tus versiones, y su sitio natural es una página selectora o una portada que enruta a los visitantes por sí misma.
No es una forma de nombrar una versión principal. Apuntar x-default a tu página en inglés porque el inglés te suena a predeterminado le dice al buscador que un visitante japonés o turco sin coincidencia debería recibir inglés. Puede que sea cierto, y merece decidirse a conciencia y no por costumbre.
Hreflang y canonical son trabajos distintos
Estos dos se enredan más que ningún otro par del SEO técnico, y el modo de fallo es grave. Un canonical dice «indexa esta otra URL en mi lugar». Hreflang dice «esta otra URL es el mismo contenido para otro público».
Apunta el canonical de tu página alemana a la inglesa y le habrás dicho al buscador que la alemana no debe indexarse en absoluto: eso la saca de los resultados y a la vez rompe el conjunto hreflang que la referenciaba. Cada página localizada debería canonicalizar hacia sí misma y describir a sus hermanas con hreflang.