Errores de hreflang: qué significan y cómo solucionarlos
La mayoría de los errores de hreflang se reducen a una cosa: las versiones lingüísticas de una página no coinciden entre sí, así que los motores de búsqueda no pueden confiar en lo que indican. Soluciona primero esos problemas, empezando por los enlaces de retorno que faltan y las páginas que no se incluyen a sí mismas. Suelen deberse a una plantilla o a la configuración de un plugin, así que basta con corregirlos una vez, en lugar de página por página. Esto es lo que significa cada error, por el orden en que los abordaría.
Antes de empezar: comprueba dos páginas
Hreflang es un conjunto de enlaces que indica a los motores de búsqueda qué versión lingüística de una página deben mostrar a cada persona. A menudo, los problemas están en la relación entre dos páginas, así que comprueba una página y una de sus traducciones, no solo la página de inicio.
El comprobador de hreflang gratuito lee las etiquetas de una página en la sección <head> del HTML y en la cabecera HTTP Link; después, abre hasta 20 de sus versiones lingüísticas para comprobar si responden y enlazan de vuelta. Hay que tener en cuenta una limitación: no lee el sitemap XML. Si tu hreflang solo está en el sitemap, el informe dirá que no ha encontrado ninguno. Eso no significa que la configuración sea incorrecta. Comprueba esas entradas con las reglas que aparecen a continuación.
Los errores que debes solucionar primero
Estos pueden hacer que los motores de búsqueda ignoren tu hreflang para una página o para un par de páginas.
Una versión lingüística no enlaza de vuelta («falta el enlace de retorno»). Si tu página en inglés indica que la página en alemán es su versión en alemán, la página en alemán también debe indicar que la página en inglés es su versión en inglés. Si el enlace solo va en un sentido, los motores de búsqueda pueden ignorar el par. Suele ocurrir cuando se añade un idioma más adelante o cuando solo las páginas del idioma principal tienen las etiquetas. Solución: todas las versiones deben incluir la misma lista completa.
La página no se incluye a sí misma. Cada página debe incluir todas sus versiones, incluida ella misma. Solución: añade a la lista la URL de la propia página. Si el informe dice que se incluye a sí misma «solo con una barra final distinta», utiliza la dirección exacta en la que responde la página. Para un motor de búsqueda, /de y /de/ son dos URL distintas.
Una versión lingüística no devuelve un código 200. Un enlace a una página que devuelve un error 404 o del servidor es un callejón sin salida. Esto suele ocurrir cuando una página solo existe en algunos idiomas y una plantilla los incluye todos de todas formas. Solución: incluye solo los idiomas en los que realmente existe la página o publica la versión que falta.
La URL canónica apunta a otra página. Los motores de búsqueda ignoran el hreflang de una página que no es canónica. El caso típico es que todas las traducciones tengan una canónica que apunta a la página en el idioma principal, lo que indica a los motores de búsqueda que las traducciones no son las páginas auténticas. Solución: la canónica de cada versión lingüística debe apuntar a sí misma.
El código de idioma es incorrecto. Los dos errores más habituales:
en-UKno es válido, porque el código de país del Reino Unido es GB. Usaen-GB.en_USno es válido, porque hreflang utiliza un guion. Usaen-US.
Los códigos de idioma proceden de la norma ISO 639-1 y pueden llevar detrás un código de país ISO 3166-1, como de o de-AT. Un país por sí solo no es un idioma.
Una URL es relativa o está vacía. Las URL de hreflang deben ser absolutas e incluir https:// y el dominio. /de/pricing no basta.
Las etiquetas están en el body. Los motores de búsqueda solo leen los enlaces hreflang incluidos en <head>. Una causa habitual es que una etiqueta o un script perdido cierre la sección head antes de tiempo, o que un tema muestre las etiquetas demasiado tarde.
Un idioma apunta a dos URL distintas. Cada idioma debe tener una sola dirección en cada conjunto. Comprueba si hay dos sistemas escribiendo etiquetas a la vez, como un tema y un plugin.
Advertencias que conviene corregir cuando puedas
No siempre tendrán consecuencias, pero se solucionan fácilmente:
- No hay x-default. Indica qué página mostrar a los visitantes cuyo idioma no ofreces; suele ser la del idioma principal o un selector de idioma. Es opcional, pero recomendable.
<html lang>no coincide. Una página etiquetada como alemana con<html lang="en">transmite señales contradictorias. Suele deberse a un valor predeterminado de la plantilla que nadie ha cambiado.- Una versión lingüística redirige. Enlaza a la dirección final, no a una que redirija a ella. Los enlaces
http://y la ausencia dewwwsuelen ser la causa. - Una versión lingüística incluye un conjunto distinto de idiomas. Una página incluye cinco idiomas y su traducción, cuatro. A menudo indica que se ha añadido un idioma a algunas páginas, pero no a otras.
- Se indica la misma URL para varios idiomas. Es posible que varios países compartan una página (
de-DE,de-AT), pero si todos los idiomas apuntan a una misma dirección, normalmente significa que las traducciones ni siquiera son páginas distintas. - El HTML y la cabecera HTTP no coinciden. Elige un método y úsalo de forma coherente.
Así es un conjunto correcto
Para una página en inglés y alemán, ambas páginas deben incluir el mismo bloque en su <head>:
<link rel="alternate" hreflang="en" href="https://example.com/pricing" />
<link rel="alternate" hreflang="de" href="https://example.com/de/preise" />
<link rel="alternate" hreflang="x-default" href="https://example.com/pricing" />
La canónica de la página en inglés es https://example.com/pricing. La canónica de la página en alemán es https://example.com/de/preise. Eso es todo: la misma lista en ambas, direcciones completas, códigos válidos y la canónica de cada página apuntando a sí misma. El generador de la página del comprobador crea este bloque y las entradas correspondientes del sitemap a partir de tu lista de idiomas y URL.
Corrige el origen, no la página
En un sitio de cualquier tamaño, nadie debería editar hreflang a mano. Si una comprobación falla, averigua qué genera las etiquetas:
- Un tema o una plantilla. Una sola corrección se aplica a todas las páginas, lo cual es una buena noticia.
- Un plugin. Busca primero un ajuste y comprueba que otro plugin o tu tema tampoco estén generando etiquetas.
- Un generador de sitemap. Vuelve a generarlo después de cualquier cambio en tus idiomas.
- Un sitio creado a mano. Plantéate generar la lista a partir de una tabla única de páginas e idiomas, para que un idioma nuevo no llegue solo a la mitad del sitio.
Después, vuelve a comprobar las mismas dos páginas y añade una página que hayas publicado hace poco. Las páginas nuevas son las que suelen volver a dar problemas.
No esperes que los resultados de búsqueda cambien ese mismo día. Primero, los motores de búsqueda tienen que volver a rastrear las páginas. Además, hreflang es una señal, no una orden, así que tener las etiquetas correctas no garantiza qué versión aparecerá en cada búsqueda. Si después de eso sigue posicionando bien el idioma equivocado, comprueba si la página correcta tiene contenido real y completo y si tus otras páginas enlazan a ella. Nuestra guía para añadir un segundo idioma explica cómo configurar todo lo demás.
Si prefieres no volver a preocuparte por esto
Lo integré en FolioPress porque hreflang implica un montón de reglas para algo que debería pasar desapercibido. Todas las páginas reciben sus etiquetas automáticamente, en la página y en el sitemap, con enlaces de retorno, x-default, canónicas autorreferentes y una dirección traducida por idioma. Cada página solo incluye los idiomas en los que tiene una versión, así que una traducción que falte no se convierte en un enlace roto.
Eso solo sirve si creas tu sitio con FolioPress. No soluciona el hreflang de un sitio que tengas en otra plataforma. Si, por lo demás, tu sitio actual está bien, corregir su plantilla es la opción más barata. Si este año ya es la segunda o tercera cosa que te estropea un plugin de idiomas, los planes empiezan en 12 € al mes, con una prueba gratuita de 30 días (precios).