Errores de hreflang que arruinan el SEO internacional
Diez errores explican casi todas las configuraciones de hreflang rotas, y la mayoría falla en silencio. Así se detecta y se corrige cada uno.
Casi todos los problemas de hreflang se reducen a diez errores: enlaces de retorno ausentes, falta de autorreferencia, códigos de idioma o región no válidos, URLs relativas, apuntar a páginas no canónicas, un x-default ausente, mezclar métodos de implementación, cobertura parcial, versiones alternativas bloqueadas y tratar hreflang como una solución para el contenido duplicado. Cada uno tiene un síntoma claro y un arreglo concreto.
Qué hace realmente hreflang
hreflang indica a los buscadores qué versión lingüística o regional de una página mostrar a cada usuario. Cambia la URL del resultado y nada más. No es un impulso al posicionamiento. Una página con anotaciones impecables sigue teniendo que ganarse su posición por sus propios méritos.
Cómo es un conjunto de hreflang correcto
Tres versiones (inglés, español y una alternativa por defecto) escritas como elementos link en el head de cada una de esas páginas:
<link rel="alternate" hreflang="en" href="https://example.com/page/">
<link rel="alternate" hreflang="es" href="https://example.com/es/pagina/">
<link rel="alternate" hreflang="x-default" href="https://example.com/page/">
La misma relación expresada en un sitemap XML, donde el urlset tiene que declarar el espacio de nombres xhtml:
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
xmlns:xhtml="http://www.w3.org/1999/xhtml">
<url>
<loc>https://example.com/page/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://example.com/page/"/>
<xhtml:link rel="alternate" hreflang="es" href="https://example.com/es/pagina/"/>
<xhtml:link rel="alternate" hreflang="x-default" href="https://example.com/page/"/>
</url>
</urlset>
La página en español lleva el conjunto idéntico. Esa simetría es todo el mecanismo, y casi todos los errores siguientes son formas de romperla.
1. Enlaces de retorno ausentes
Toda relación hreflang es bidireccional. Si A apunta a B, B debe apuntar de vuelta a A, o la anotación queda sin confirmar y se ignora. Síntoma: las versiones nunca se intercambian en los resultados y Search Console informa de que faltan etiquetas de retorno. Solución: generar el mismo conjunto completo para cada página del grupo, no una lista unidireccional.
2. Sin hreflang autorreferencial
Cada página debe incluir una entrada hreflang para su propia URL. Omitirla deja el conjunto incompleto, y los buscadores descartan los conjuntos que no logran cuadrar. Solución: añadir la autorreferencia, de modo que un grupo de tres idiomas lleve tres entradas en las tres páginas.
3. Códigos de idioma y región equivocados
El valor de idioma debe ser un código ISO 639-1 y la región opcional, ISO 3166-1 Alpha 2. Una región nunca puede ir sola. Tres errores clásicos: en-UK en lugar de en-GB; confundir zh-CN (chino en China) con zh-Hans (una subetiqueta de escritura, no una región); e inventar un idioma a partir de un país, como uk para el Reino Unido cuando significa ucraniano. Los valores no válidos se descartan sin avisar.
4. URLs relativas
Los valores de hreflang deben ser URLs absolutas y completas, con protocolo incluido. Un valor como /es/pagina/ no es válido y la entrada se omite. Síntoma: anotaciones que parecen correctas en tu plantilla pero que no se registran en ninguna parte. Solución: emitir siempre https://example.com/es/pagina/, la misma regla que se aplica a los valores loc del sitemap.
5. Apuntar a URLs no canónicas, con redirección o con noindex
hreflang y canonical tienen que estar de acuerdo. La canónica de cada página apunta a sí misma, y cada valor de hreflang apunta a la URL canónica de otra versión. Anotar una URL que redirige, que se canonicaliza hacia otra o que lleva noindex envía instrucciones contradictorias, y el conflicto suele resolverse descartando tus anotaciones. Solución: asegurarte de que cada URL del grupo devuelve 200, es indexable y es autocanónica.
6. x-default ausente o mal usado
x-default marca la alternativa por defecto para los usuarios cuyo idioma no cubres: un selector de idioma, una página de aterrizaje global o tu versión principal. Síntoma: visitantes de regiones no cubiertas que aterrizan en una versión arbitraria. Solución: designar una alternativa real y repetirla en todo el grupo.
7. Mezclar métodos de implementación
Hay tres sitios válidos para hreflang: elementos link de HTML en el head, cabeceras HTTP Link y anotaciones xhtml:link en el sitemap XML. Cualquiera de los tres funciona. El problema empieza cuando un sitio implementa dos a medias, y el head lista dos idiomas mientras el sitemap lista cuatro. Elige un método y sé completo con él.
8. Anotar solo la portada
hreflang es una señal a nivel de página, no un ajuste a nivel de sitio. Etiquetar la portada no hace nada por las 500 páginas de producto que cuelgan de ella. Síntoma: la portada correcta en cada mercado y las páginas profundas en el idioma equivocado. Solución: emparejar cada página con sus equivalentes reales y, cuando no exista equivalente, dejar ese idioma fuera en vez de apuntar a algo parecido.
9. Bloquear la versión alternativa para que no se pueda rastrear
Una relación solo se confirma si ambas páginas se pueden descargar. Prohibir una carpeta de idioma en robots.txt, o esconderla tras georredirecciones que desvían a los rastreadores, rompe la comprobación del enlace de retorno. Solución: mantener cada URL anotada rastreable y accesible sin redirección.
10. Esperar que hreflang resuelva el contenido duplicado
hreflang gestiona variantes regionales y lingüísticas. No elimina duplicados de páginas casi idénticas ni sustituye a las etiquetas canónicas. Dos páginas en inglés casi iguales, una para Estados Unidos y otra para Australia, siguen compitiendo entre sí; hreflang solo dice a qué mercado se dirige cada una. Los duplicados reales necesitan canonicalización o consolidación.
Qué método de implementación elegir
| Método | Ideal para | Principal inconveniente |
|---|---|---|
| Elementos link de HTML en el head | Páginas HTML, pocos idiomas, sitios con plantillas | El marcado crece con el cuadrado del número de idiomas y se envía en cada carga de página |
| Cabecera HTTP Link | Archivos que no son HTML, como los PDF, donde no hay head que editar | Invisible en el código fuente, exige configurar el servidor o la CDN y se pierde con facilidad en una migración |
| xhtml:link en el sitemap XML | Sitios grandes y con muchos idiomas; mantiene ligero el marcado de las páginas | Más difícil de comprobar a ojo, y el sitemap tiene que seguir válido y al día o todo el conjunto se queda obsoleto |
La vía del sitemap es la que mejor escala, y por eso mismo falla en silencio: un espacio de nombres mal formado o un archivo desactualizado se lleva por delante las anotaciones. Valida el sitemap después de cualquier cambio de generador, y divide los conjuntos multilingües grandes con un índice de sitemaps.
Cómo comprobar que hreflang funciona
Comprueba en las dos direcciones. Descarga la página A, lee su conjunto de anotaciones y después descarga cada URL que nombra y confirma que todas listan el mismo conjunto, incluida ella misma. El código fuente cubre el método HTML, las cabeceras de respuesta cubren el segundo y el sitemap cubre el tercero. Cualquier asimetría es el fallo.
Cuando Search Console ofrece informes de segmentación internacional para tu propiedad, enumera los errores de hreflang, como las etiquetas de retorno ausentes y los códigos de idioma desconocidos, y es la forma más rápida de ver los problemas a escala. Va por detrás de tus despliegues, así que trátalo como una segunda opinión. Para los fallos de rastreo que hay debajo, la guía de errores de sitemap cubre las redirecciones, los 404 y los bloqueos de robots.txt que tumban conjuntos enteros de anotaciones.