Cuando las etiquetas canónicas apuntan a través de idiomas, Hreflang falla
Una página localizada cuyo canónico apunta a su gemelo en inglés cancela su propia anotación hreflang, y ningún navegador puede detectarlo. Datos de auditoría sobre las comprobaciones que capturan la contradicción, además del día en que nuestros propios prefijos de localización 9 fallaron en una de ellas.
Una página puede llevar etiquetas 2 en el mismo<head>that address the same crawler about the same URL and say opposite things. Onhttps://example.com/fr/pricing, esto indica que la página es el miembro francés de un clúster:
<link rel="alternate" hreflang="fr" href="https://example.com/fr/pricing" />
Y esto, 1 línea debajo, indica que la página es una variante que debe integrarse en el original en inglés:
<link rel="canonical" href="https://example.com/pricing" />
Los sitios reales envían ambos, desde la misma plantilla, en cada ruta localizada que poseen. Esta es la falla que permanece después de la que documentamos en julio — la referencia propia hreflang faltante, aún fallando 58% de 88 evaluaciones hreflang en nuestros datos actuales. Un sitio puede cerrar ese bucle, obtener cada referencia propia correcta, y aún así hacer que cada página localizada solicite ser reemplazada por su gemelo en inglés.
Un canónico multilingüe pide Google que integre la página localizada URL en el original
Una etiqueta canónica es una solicitud de consolidación: trata esta URL como una variante de esa, e indexa esa. Una anotación hreflang es una reclamación de enrutamiento: esta URL es la versión para este idioma. Apúyalas a URLs diferentes y el sitio ha emitido una solicitud que anula su propia reclamación — el espacio francés en el clúster es ocupado por una página que se desmarca. Google ha sido explícito de que hreflang es una pista más que una directiva, y la canonización funciona de la misma manera: el sitio suministra señales, Google las resuelve. Esa resolución es todo el problema. Con una página localizada auto-canónica, el editor decide qué URL sirve a los buscadores franceses. Con un canónico multilingüe, el editor ha delegado la decisión mientras cree que el clúster está configurado — y el resultado que se informa más tarde es una página localizada que no clasifica en su propio mercado mientras la página en inglés aparece en su lugar. Los generadores que producen esto son ordinarios. Un asistente canónico construido a partir de una definición de ruta en lugar de la ruta de la solicitud emite la URL sin prefijo para cada localización. Un CMS cuya configuración hreflang es por localización pero cuya configuración canónica es global hace lo mismo. Entonces, una migración que añadió prefijos de localización a las URLs y dejó el canónico apuntando a donde el contenido originalmente vivía. En cada caso, la página se muestra perfectamente, las anotaciones parecen completas en view-source, y la contradicción es 2 atributos aparte.
El conjunto de datos
| Referencia propia de hreflang presente | La página de inicio no aparece en sus propias anotaciones de hreflang | 58% de 88 evaluaciones; 59% de 34 sitios |
| Canónico de la página de inicio presente | La página de inicio declara ningún canónico URL en absoluto | 29% de 49 sitios |
Metodología: instantánea de auditoría completada más reciente por dominio, conjunto de comprobaciones engine-v2, aproximadamente mayo 23 – August 31, 2026, anonimizado. Los denominadores difieren por comprobación — 34 a 49 sitios — porque una comprobación solo se ejecuta cuando sus entradas existen: la comprobación de referencia propia no produce veredicto en una página de inicio sin anotaciones de hreflang en absoluto, lo que explica por qué su recuento de sitios es el menor. Las tasas a nivel de evaluación y a nivel de sitio difieren porque algunos dominios fueron auditados más de una vez en la ventana. La muestra es auto-seleccionada — propietarios que realizaron una auditoría — y sesga a tamaños pequeños-medios, por lo que trate las tasas como direccionales para ese segmento. La segunda fila es el riesgo más silencioso. Una página sin canónico no ha contradicho su anotación de hreflang, pero tampoco la ha defendido: nada en la página indica cuál URL considera autoritativo, por lo que una variante de localización accesible en más de 1 dirección se resuelve completamente por inferencia. Llegar a un clúster correcto pasa primero por la higiene canónica, por eso nuestro guía canónica es el prerequisito para la guía de implementación de hreflang, no un complemento de ella.
La contradicción solo es visible desde ambos extremos del clúster
Una sola página no puede reportar este fallo sobre sí misma. /fr/pricing parece internamente consistente — un conjunto de hreflang, un canónico, ambos bien formados. El defecto aparece cuando se sostiene la anotación y la página anotada lado a lado, por eso nuestra auditoría recupera el clúster en lugar de leer 1 documento.
Cada ejecución analiza las anotaciones de hreflang de la página de inicio y recupera hasta 12 objetivos del mismo sitio de ellas, omitiendo el paso por completo cuando la propia página de inicio quedó fuera del dominio, ya que esas anotaciones provinieron del HTML de un sitio extranjero. Para cada objetivo que devuelve contenido, el motor registra el código de estado, si la solicitud redirigió, si hay una directiva noindex presente y si el propio canónico del objetivo resuelve al URL que nombró la anotación. Una discrepancia allí se registra como canonical_mismatch y falla una comprobación de alta severidad — esa comprobación es la captura canónica multilingüe. Las URLs se comparan con barra final y se normaliza el caso, por lo que /fr/pricing y /FR/pricing/ son 1 página, y nada más fino se trata como una diferencia.
Una segunda comprobación compara el idioma que la página declara en su atributo lang con el locale que su propia anotación hreflang afirma para ella, en la subetiqueta primaria, y solo cuando alguna página en la auditoría declaró hreflang para sí misma. Un sitio sin anotación autorreferencial en ningún lugar es monolingüe en cuanto la auditoría puede ver, y la comprobación informa eso en lugar de pasar.
Cuando un alternativo no puede ser recuperado, el veredicto es inconcluso en lugar de una falla, y el informe indica cuántos de los objetivos declarados fueron realmente evaluados. Un alternativo inalcanzable es una brecha en la evidencia, y reportarlo como un defecto sería inventar uno.
Nuestros propios prefijos de locale sirvieron inglés hasta August 17, 2026
Estas comprobaciones existen porque fallamos esta clase de defecto en seoreport.dev. Ahrefs Site Audit reportó un hreflang y HTML lang mismatch en 184 URLs en nuestro propio sitio. El atributo lang era el síntoma; el contenido también era inglés, en cada uno de los 9 prefijos de locale, lo que hizo que cada URL localizado fuera un duplicado de su gemelo inglés — el mismo resultado que produce un canónico cruzado de idioma, alcanzado desde la otra dirección.
La causa fue 1 función de límite. El shell del documento tomó su idioma de un ayudante que devuelve el idioma predeterminado siempre que window esté indefinido. En el servidor, /fr/pricing por lo tanto renderizó lang="en" y sembró el paquete de traducción en inglés, mientras que el componente que emite los enlaces de head — que lee la ruta, no el tiempo de ejecución — emitió un fr self-hreflang correcto directamente al lado. Un efecto del cliente cambió el idioma después de la hidratación, por lo que cada comprobación basada en navegador pasó y ningún humano lo vio. Los rastreadores no ejecutan ese efecto.
Corregido en August 17, 2026: el shell deriva su idioma de la ruta, el diseño localizado resuelve el paquete de locale en un cargador para que el renderizado del servidor y la hidratación lo compartan, y un locale soportado sin paquete lanza una excepción en lugar de servir silenciosamente inglés bajo su prefijo. La dirección del texto también estaba incorrecta — el árabe había estado sirviendo ltr.
La puerta es un humo crudo-HTML sin JavaScript, porque una comprobación del navegador es ciega a esta clase de fallo completa. Ejecutar red-primer contra producción reportó 440 fallos en 128 URLs localizadas, cada página en 100% inglés con portabilidad. Contra la compilación corregida: 0 fallos en 144 URLs. La comparación de idioma versus hreflang del motor se construyó por separado, y el primer sitio que habría fallado era el nuestro.
x-default hereda lo que declare la página de reserva
Nuestra muestra de sitios que declaran x-default es demasiado pequeña para publicar una tasa de fallo, y hay una segunda razón por la que no lo calificamos: el HTML capturado demuestra que se declara una anotación x-default, no a qué audiencia el editor la pretendía servir. Esa cuestión de corrección no es decidible a partir del documento, por lo que la comprobación informa lo que puede y los hechos vecinos — forma URL, salud objetivo, anotaciones recíprocas, alineación canónica — se evalúan de forma independiente contra el mismo objetivo.
Lo que implica el mecanismo vale la pena declararlo de todos modos. x-default es la reserva para buscadores cuyo idioma el sitio no sirve, por lo que normalmente apunta a la página del mercado principal. Si esa página lleva un canónico cruzado de idioma, la reserva para cada buscador no coincidente en el planeta hereda la contradicción, y la auditoría lo reportará a través de las comprobaciones de salud objetivo en lugar de a través de x-default mismo.
Verifícalo en crudo HTML, por localidad, en ambas direcciones
Obtén la página como lo hace un rastreador y lee 3 cosas:
curl -s -A "Googlebot" https://example.com/fr/pricing | grep -iE '<html|rel="canonical"|hreflang'
El atributo lang, la entrada hreflang auto-referencial, y el canónico deben concordar en 1 localidad y 1 URL:
<!-- On https://example.com/fr/pricing --><html lang="fr"><link rel="canonical" href="https://example.com/fr/pricing" /><link rel="alternate" hreflang="en" href="https://example.com/pricing" /><link rel="alternate" hreflang="fr" href="https://example.com/fr/pricing" /><link rel="alternate" hreflang="x-default" href="https://example.com/pricing" />
Luego repite en 1 página por localidad, y obtén cada URL que el nombre de las anotaciones confirme que cada uno canoniciza a sí mismo. La regla es lo suficientemente corta como para entregarla a un desarrollador: cada miembro de un clúster hreflang canoniciza a sí mismo. Un canónico cruzado de idioma es correcto en exactamente 1 situación — cuando el URL localizado no está localizado en absoluto y sirve el mismo idioma que el original — y en esa situación el URL no pertenece al clúster tampoco. La Inspección URL de Search Console da la segunda opinión autorizada sobre qué canónico Google realmente se seleccionó, por URL. Nuestra auditoría ejecuta el bucle a través del clúster en cada informe, y el free report lista cada par contradictorio con la página en la que se encontró. Los prefijos de localidad 9 en seoreport.dev pasan ahora, y pasan porque enviamos el defecto primero, en un sitio cuyo producto entero lo está encontrando.
Ver cómo se clasifica tu sitio
Get a free IA-powered SEO report with actionable findings and priority fixes for your website.
Sin registro obligatorio.