Conviene empezar por lo que suele sorprender: Magento 2 no añade etiquetas hreflang por su cuenta. Gestiona idiomas y países con enorme detalle mediante store views, pero no traduce esa estructura en señales para Google. Si no has instalado nada ni tocado el layout, tu tienda multiidioma no tiene hreflang.
Cómo se organiza el multiidioma en Magento 2
La jerarquía es website → store → store view, y la store view es la que importa aquí: cada una tiene su locale, su catálogo visible y su URL. Un grupo hreflang en Magento es, en la práctica, el conjunto de store views que representan la misma página en distintos idiomas o países.
- 1.En Tiendas → Toda las tiendas comprueba qué store views tienes y a qué website pertenecen.
- 2.En Tiendas → Configuración → General → Locale Options revisa el locale de cada store view. De ahí sale el código de la etiqueta hreflang, así que un locale mal puesto se propaga a todo.
- 3.En Tiendas → Configuración → General → Web decide cómo se sirve cada store view: por código en la URL, por subdominio o por dominio propio.
Si tienes activado "Add Store Code to URLs", tus URLs quedan como ejemplo.com/es/... con el código de store view. Es válido, pero asegúrate de que el hreflang declara exactamente esa URL y no la versión sin código: ambas suelen responder, y apuntar a la que redirige invalida la etiqueta.
Opción 1: extensión (lo recomendable)
Es el camino habitual porque el trabajo real no está en imprimir las etiquetas, sino en saber qué URL corresponde a la misma entidad en otra store view, incluidos productos con url_key traducida. Las extensiones del mercado leen las store views y generan el grupo automáticamente para home, categorías, productos y páginas CMS, sin tocar plantillas.
Al elegir extensión, comprueba que cubre estos cuatro puntos, porque no todas lo hacen:
- •Genera la autorreferencia, no solo los enlaces a las otras store views.
- •Permite designar una store view como x-default.
- •Omite del grupo los productos no visibles en una store view, en lugar de generar una etiqueta hacia un 404.
- •Respeta las url_key traducidas por store view en lugar de asumir la misma ruta.
Opción 2: layout XML propio
Si el catálogo es idéntico en todas las store views y las rutas coinciden, puedes inyectar las etiquetas desde tu tema con layout XML, sin extensión. Es viable en tiendas con estructura estable y pocos idiomas.
<!-- app/design/frontend/Vendor/tema/Magento_Theme/layout/default_head_blocks.xml -->
<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
layout="1column"
xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
<head>
<link src="" rel="alternate" hreflang="es-ES"
href="https://ejemplo.com/es/"/>
<link src="" rel="alternate" hreflang="fr-FR"
href="https://ejemplo.com/fr/"/>
<link src="" rel="alternate" hreflang="x-default"
href="https://ejemplo.com/es/"/>
</head>
</page>Este layout aplica el mismo grupo a todas las páginas que lo hereden, así que solo sirve para URLs fijas como la home. Aplicarlo globalmente haría que cada ficha de producto declarase la home de los otros idiomas como su alternativa, que es peor que no tener hreflang.
Para páginas dinámicas necesitas un bloque propio que resuelva la URL equivalente en cada store view a partir del producto o categoría actual. En cuanto llegas a ese punto, estás escribiendo la extensión: casi siempre sale más barato instalar una.
Los errores específicos de Magento
| Síntoma | Causa | Solución |
|---|---|---|
| No hay ninguna etiqueta hreflang | Magento no las genera de forma nativa | Instala una extensión o añade el layout |
| Etiquetas hacia páginas 404 | Producto no visible en esa store view | Excluir del grupo los productos no disponibles |
| Código de idioma incorrecto | Locale mal configurado en la store view | Corrige el locale en Locale Options |
| URLs con y sin store code mezcladas | Add Store Code activado a medias | Unifica el criterio y declara la URL que responde 200 |
Verifica store view por store view
En Magento el volumen juega en contra: una extensión mal configurada genera etiquetas erróneas en miles de fichas a la vez. Coge una misma ficha de producto en todas las store views y valida las URLs juntas antes de dar por buena la configuración. Repite después con una categoría y con una página CMS, porque las extensiones no siempre tratan igual los tres tipos de página.
Prueba la herramienta gratis
Analiza tus URLs con Validador Hreflang de iRankly. Sin registro, sin tarjeta.
Si usas otra plataforma, o quieres el detalle conceptual de qué hace cada atributo: