Cuando utilizas las etiquetas hreflang y canónicas en un sitio web debes tener cuidado de no enviar señales equivocadas a Google. Cada una tiene un propósito concreto. En este post comentaremos la forma adecuada de aplicar estas etiquetas para realizar SEO internacional en tu página web.
Las etiquetas hreflang y las etiquetas canónicas tienen funciones muy similares, son fáciles de confundir. Ambas están pensadas para evitar problemas con contenido duplicado, pero deben ser usadas en contextos diferentes. Si ya tienes unas etiquetas Canonical incluidas en tu página web, estarás diciéndole a Google qué paginas indexar y cuales no. Si a continuación añades etiquetas hreflang de forma incorrecta o innecesaria puede que Google se sienta confundido. Esto puede provocar problemas de indexación. Por ello vamos a tratar de contextualizar cada etiqueta, para entenderlas mejor y usarlas adecuadamente.
Para empezar, una página con la etiqueta Canonical apuntando a otra URL le está diciendo a Google:
Oye Google, no quiero que me indexes a mi, pero quiero que indexes a mi hermano gemelo que está en esta otra URL.
Por otro lado, esta URL tendrá otra etiqueta Canonical apuntandose a sí misma, y lo que esta le estará diciendo a Google es:
Hola Google, es a mí a quien tienes que indexar, no a mis hermanos gemelos.
La etiqueta canonical tiene esta forma:
<link rel=”canonical” href=”http://www.miweb.com/url_que_quiero_indexar” />”
Entonces, si esto ya me evita el contenido duplicado ¿para qué tengo que utilizar hreflang?
La razón por la que se utiliza hreflang es para decirle a Google en qué área geográfica estás ubicado y en qué idioma hablas, de esta manera cada contenido posiciona en su respectivo país. Con la etiqueta hreflang apuntas a los otros dominios que tienen tu mismo contenido pero que se sitúan en otras áreas geográficas y están escritos en otros idiomas. De esta manera le dices a Google:
Hola Google, soy de España y hablo Español. Estos son mis hermanos, tienen el mismo contenido que yo pero en frances de Costa de Marfil, frances de Francia y español de Mexico. Indéxanos y posiciona a cada uno en su país. ¡Somo contenido duplicado, pero de gran valor!
Cuando apuntas desde una url a otros dominios en otros idiomas utilizando la etiqueta hreflang esos dominios también tendrán a su vez que apuntar a esa página del idioma y país inicial. Si esas URLs no te están apuntando de vuelta, las etiquetas hreflang no estarán bien implementadas y no surtirán efecto.
Dentro de las etiquetas hreflang puede haber una que se llama “default”. Esta etiqueta “default” tendrá que apuntar a una URL o página genérica que valga para todos los países e idiomas que no estén abarcados ya (una .com por ejemplo o la sección del idioma principal de tu página web). De esta manera Google sabrá qué mostrar al usuario cuando éste no esté localizado en ninguna de las áreas geográficas en las que tienes dominio.
Por ejemplo, un conjunto de etiquetas hreflang tendría esta forma:
<link href=”http://www.miweb.com” hreflang=”x-default” rel=”alternate”>
<link href=”http://www.miweb.com.gh” hreflang=”en-GH” rel=”alternate”>
<link href=”http://www.miweb.co.ao” hreflang=”pt-AO” rel=”alternate”>
<link href=”http://www.miweb.com.ng” hreflang=”en-NG” rel=”alternate”>
<link href=”http://www.miweb.co.za” hreflang=”en-ZA” rel=”alternate”>
En este caso son etiquetas de la homepage y diferentes dominios, pero cada URL deberá ser la específica de la página en la que se encuentre.
Otro ejemplo dentro de un mismo dominio sería el siguiente:
<link href=”http://www.miweb.com/en” hreflang=”en” rel=”alternate”>
<link href=”http://www.miweb.com/pt” hreflang=”pt” rel=”alternate”>
<link href=”http://www.miweb.com/es” hreflang=”es” rel=”alternate”>
Cómo veis, en este último ejemplo no he utilizado la etiqueta “default” dentro del código, ya que esta es optativa, no es obligatoria. Tampoco he especificado ningún país, tan sólo el idioma. Si tengo una versión de la página web, por ejemplo en Inglés, que sirve tanto para EE.UU como Canadá, no es necesario especificar el país al que va dirigido el dominio o URL.
Existen dos errores típicos en la implementación de las etiquetas hreflang:
El primero de ellos se trata de no implementar las etiquetas de retorno. Si cometes este error no te preocupes porque Google te avisara desde Google Search console.
El segundo error típico es el de implementar mal el código de área geográfica o de idioma. En este caso Google Search console también te avisara si está mal implementado.
Si has implementado las etiquetas Canonical y hreflang es prácticamente seguro que no indexadas contenido duplicado dentro de tu página web y que Google sabrá reconocer entre contenido duplicado y contenido dirigido a diferentes públicos.
Además cada usuario recibirá un contenido específico y en su idioma natal, de esta forma el CTR de tus paginas indexadas será superior. Esto se debe a que cuando el usuario busque una página web y dentro de los resultados de búsqueda aparezca la tuya, éste verá que está escrito en su idioma y que el dominio corresponde a su área geográfica, por lo que las probabilidades de que haga clic en tu enlace son mayores.
Utiliza hreflang solo si quieres dirigir un mismo contenido a diferentes a áreas geográficas. Si sólo tienes una web que utilizas para todo el planeta no te molestes en utilizar hreflang, no servirá para nada o incluso puede ocasionarte problemas. En este caso con usar la etiqueta Canonical seria suficiente.
Hola Sergio, gracias por tu post.
Tengo un pregunta, leo muchos post sobre el tema pero no encuentro ninguno que me diga cómo solucionar este error: “no implementar las etiquetas de retorno”.
Este es el error que tengo en este blog: http://www.mejorespracticasrrhh.es. Y esta es la etiqueta que he incluido en el :
Este blog solo esta es español y esta dirigido así “a todo el planeta” jeje. Según comentas y si ya tengo implementada la etiqueta canonical (que esta implementada), aconsejas no incluirla pero no entiendo muy bien por qué, puesto que yo entiendo que son etiquetas para fines diferentes, una para indicar a google cual es la original y evitar el contenido duplicado y la otra para indicar áreas geograficas e idioma diferentes.
En mi caso, con un blog solo en español para todo el planeta.. ¿me recomiendas que quite la etiqueta hreflang?.
De todas formas y ya que tengo que hacerlo en otro sitio que si es multidioma… si me diera el error “no hay etiquetas de retorno”, nos podrias explicar como se solucionarlo por favor?? MIL GRACIAS de antemano y feliz año!!
Alberto:)
Hola Alberto! Gracias por tu comentario.
Efectivamente, si tu blog es de un solo idioma no hay razón para utilizar la etiqueta hreflang, así que te recomiendo que la quites. Y tal y cómo dices, las etiquetas hreflang y canonical son distintas, pero complementarias. En el post simplemente aclaro para qué sirve cada una, ya que no siempre hay que usar las dos, como por ejemplo en tu caso. En tu caso, aunque no utilices hreflang debes utilizar canonical. Es una buena práctica aunque no tengas contenidos duplicados en tu web.
Para la otra web que comentas que será multiidioma, si añades bien las etiquetas hreflang no debería darte ningún error. Me ha ocurrido alguna vez encontrarme con una web con la etiqueta hreflang mal implementada, arreglarlo, y que aún así me siga apareciendo el error. Finjandome veia que el error tenia aún fecha pasada, por lo que hay que esperar a que googlebot vuelva a pasar por la web para que de como solucionado el problema. Utiliza el Sitemap para ayudar a Google a que rastree las páginas corregidas y se dé solucionado cuanto antes.
Perfect MIL GRACIAS por tu pronta respuesta!
Queda claro, muchas gracias por la información.
Hola Ruben. Gracias por tu comentario. Me alegra haberte sido de ayuda.
Estamos leyendo sobre “etiqueta hreflang” y, perdona nuestra ignorancia, pero nos perdemos en estas cuestiones. Para un espacio (blog) escrito en Español, que lleva un traductor incorporado, pero no versiones de la página escritas en otros idiomas, y cuyo dominio es: losportadoresdelaantorcha.com, ¿qué etiqueta hemos de emplear, y cómo integrarla? En Google Search Console, el país es España, antes aparecía EE.UU. por defecto. Si nos pudieras ayudar te quedaríamos muy agradecidos. Recibe un cordial saludo
Hola! En realidad vuestra web solo tiene una versión en castellano, es decir, no teneis el mismo texto en distintos idiomas, no hay riesgo de contenido duplicado entre otras cuestiones. Vosotros ofrecéis la posibilidad de que el usuario traduzca el contenido en su navegador, nada mas. Por ello vosotros no teneis porque añadir la etiqueta hreflang. En vuestro caso la etiqueta es innecesaria, no teneis que ponerla, con haber identificado España en search console es suficiente. Gracias por comentar!
Hola Sergio,
¿Yo me pregunto que pasaría con las paginaciones o las variables de filtro tipo /?cat=automovil por ejemplo? en este tipo de páginas en una web en varios idiomas como haríamos.
Yo entiendo que esas las páginas de filtros podrían llevar canonical a la página principal ( en la que está toda la información) ¿es así? en ese caso si el canonical apunta a otra página, el hreflang a donde debería apuntar, a las diferentes versiones de idioma de la canonica o a las versiones de la url inicial
Hola Laura, gracias por tu comentario. Hacer un canonical a la pagina principal desde una pagina de categoría no tiene sentido. De esta forma le estarías diciendo a Google que la pagina de categoría no debe ser indexada ya que es algo muy parecido a la home, lo cual no es cierto. Además quieres que esa pagina de categoría se indexe! Si por alguna razón necesitases poner canonical y si es categoría principal, debe apuntarse a si misma (habría que ver los detalles). Y el Hreflang debe apuntar a las diferentes versiones de idiomas distintos de esa misma categoría. Para ti seguramente es muy importante indexar esas categorias, así que cuidado con el mal uso del canonical. Ten también en cuenta que si tu categoria “automovil” es una categoría principal, será buena idea que le pongas una URL “bonita” para que rankee mejor.
Hola de nuevo Sergio,
Muchas gracias por tu comentario, creo que en su día no me expliqué bien y me vuelven a surgir dudas.
No me refiero a categorías importantes sino a filtros.
Es decir, en una página X tenemos toda la información (esa es la importante y que si se debe indexar) estas variables que comento que tengo dudas serían filtros de esa información. Para que me entiendas el texto es siempre el mismo y cambian las fotos, de ahí el poner canonical a la página en la que aparece la info sin filtrar ( no a la home). ¿Esto sería correcto? Quizá sería mejor establecer esos filtros en recursos bloqueados de search console?
Por otro lado, ¿para las paginaciones por ejemplo de un blog, como haríamos?
Y por otro lado, si una página por X motivo hace canonical a otra, las etiquetas hreflang solo deberían ir en la que recibe el canonical la otra no llevaría nada, ¿verdad?
Muchas gracias, la verdad es que tu artículo es muy instructivo, de lo mejorcito que hay por ahí, pero aún así me han surgido varias dudas 🙁
Gracias de nuevo Sergio
Perdón donde puse “Quizá sería mejor establecer esos filtros en recursos bloqueados de search console?”
Me refería a parámetros de URL, no recursos bloqueados
Hola de nuevo Laura! Una buena práctica es tener una etiqueta canonical por defecto en todas las páginas de tu web, apuntando a si mismas, excepto obviamente el contenido duplicado (o muy similar) que debe apuntar al original. En tu caso, tal y como dices, yo crearía una etiqueta canonical apuntando a la página sin filtrar, es decir, la url sin parámetros. Y efectivamente también es buena práctica decirle a google a través de Search Console qué significan esos parámetros, para que sea capaz de comprender mejor tu web, entenderá que se trata de filtros de búsqueda y actuará en consecuencia. En resumen, utilizando tanto canonical como search console no tendrás problemas, lo tendrás perfectamente optimizado.
Con respecto al uso de hreflang, una página con una etiqueta canonical que apunta a otra página que no es si misma no tiene por qué llevar hreflang, lo que pasa es que habitualmente la implementación de estas etiquetas en paginas grandes se hacen de forma dinámica, no página a página, ya que sería muchísimo trabajo. Por lo que si esta página (la que tiene el canonical apuntando a otra diferente), si además tiene un hreflang apuntando a su gemela en otro idioma, no es un problema, no hace ningún mal. Ten en cuenta que usando la etiqueta canonical Google obvia esa página. Con las paginaciones, lo mismo. Si el contenido de la página 2 en castellano va a ser el mismo que el de la pagina 2 en inglés, hay que usar hreflang. Como he dicho antes, normalmente esto se programa para que se haga de forma dinámica.
Como remate, ojo a tu sitemap, no incluyas urls que tengan canonicals apuntando a otra página. Con el sitemap también estás definiendo tu página “original” frente a la “duplicada”.
Gracias por tus comentarios!
Muchas gracias Sergio,
Me ha quedado muy claro, no perderé de vista tu blog. Gran trabajo compañero 😉
Gracias Laura por tu comentario!
Hola Sergio, como estas ?
Te hago una consulta.
Tengo una pagina con woocommerce, el idioma es español como principal, el ingles e italiano como secundarios.
El asunto es el siguiente.
Hemos creado subdominios para algunos paises de destino y usamos https
La configuracion es la siguiente.
Cada pais tiene un subdominio, por ej.
(pongo solo los subdominios para que sea mas facil visualizar )
Argentina tiene
misitio-shop.com // Quiero que este sea por defecto para argentina.
ar. // aunque este podria ser eliminado si complica la configuracion.
Latinoamerica
uy.
co.
ve.
bo.
cl.
Centroamercia y carible tienen
latam.
Europa tiene
es ( para el español en españa )
it ( italiano para italia )
europe. ( para ingles, resto de europa. )
Como configurarias las etiquetas HREFLANG Y CANONICAL PARA SEO INTERNACIONAL
Hola Marcelo, gracias por tu comentario.
Puedes marcar misitio-shop.com como el dominio orientado en español de argentina y el resto de subdominios a cada una de sus áreas geográficas (español venezuela, español colombia….), no hay problema en ello. El subdominio europe.misitio-shop.com sería el que debes definir como default, ya que quieres posicionar un contenido en inglés en paises que hablan otro idioma (francia, alemania…), y eso no lo tendrás fácil. Déjalo abierto a que se posicione como contenido genérico ya que no tienes específico de cada país.
Hola Sergio,
Tienes una forma muy particular y didáctica de explicarte, me ha gustado mucho tu artículo. Aunque desgraciadamente sigo teniendo mí duda particular, y es, si yo tengo un dominio con contenido enfocado a España, supongamos, miweb.com, y ahora creo otra web con el mismo contenido pero obviamente traducidos para otro pais, pero con un dominio totalmente diferente, supongamos nuevaweb.fr, ¿sería también necesario implementar las etiquetas hreflang?
Un saludo y felicidades por tu blog, simpre se agradece un contenido de calidad.
Hola Rubén, gracias por tu comentario.
Efectivamente. Hay que avisarle a Google de que esas webs, a pesar de tener el mismo contenido (es el mismo aunque esté en distintos idiomas), no es contenido duplicado, sino simplemente contenidos adaptados a regiones distintas. Por ello, debes utilizar etiquetas Hreflang en tu dominio .es, tanto apuntándose a si mismo (indicando que es contenido en español y para España), como apuntando al dominio francés (indicando que es contenido en frances para Francia). Así con todas los dominios en los distintos idiomas que tengas.
Un error muy típico es no incluir etiquetas reciprocas. Es decir, el mismo etiquetado de tu dominio .es debe estar también en tu web francesa .fr (apuntando en ambas a la web española y a la francesa).
Buenas tardes Sergio. Todo está explicado perfectamente pero me queda una pequeña duda respecto a la etiqueta canonical cuando la web está en dos idiomas, español e ingles, que es mi caso. ¿Que ocurre si en ambas versiones se coloca la etiqueta canonical identicas apuntando cada una a si misma. Por ejemplo en la versión española pongo una etiqueta que apunta a la versión española señalándola como canonical y en la versión inglesa otra etiqueta que apunta a la versión inglesa señalándola también como canonical. ¿Esto hace que pierda el sentido la etiqueta canonical o equivale a indicar a Google que quiero que se indexe esta otra pagina también como canonical aunque tiene contenido parecido o traducido porque se trata de un idioma diferente y no de un contenido duplicado?. Disculpa si he conseguido explicarme bien.
Respecto a la etiqueta hreflang, otra duda. ¿Tanto en la versión española como en la inglesa debo incluir en cada una de ellas un hreflang con link que apunte a si mismo y además otra etiqueta hreflang con link que apunte a la versión del otro idioma?. ¿Entonces junto con la etiqueta canonical resultarían en total 3 lineas en todas y cada una de las páginas, en mi caso que solo la tengo en español e inglés?. Muchas gracias.
Hola Manuel, gracias por comentar.
Con respecto las etiquetas canonical, lo que comentas es correcto. Debes poner una etiqueta canonical además de la etiqueta freflang. La canonical indicará la versión correcta de ese idioma, la etiqueta hreflang avisará de que hay más versiones correctas pero en otros idiomas. Piensa que con la etiqueta hreflang le dices a Google qué versión corresponde a qué idioma, pero dentro de cada idioma también hay que decirle cual es la URL canónica. Imáginate que, por lo que sea, tienes una versión de esa página en castellano a la que se puede acceder con parámetros (debido a una campaña de afiliación que estás llevando a cabo, por ejemplo). Si no quieres que esa URL con parámetros se indexe debes tener la etiqueta canónica puesta. Tener la etiqueta canónica en todas tus URLs es una buena práctica, evitas disgustos.
Con respecto a la segunda duda, lo que tendrías son dos líneas de código (si te he entendido bien). Una apuntando a la versión en castellano y otra a la inglesa. Sí, tendrias esas lineas en todas y cada una de las páginas de tu web, una apuntando a si misma y otra apuntando a su equivalente en el otro idioma. Y esto es así independientemente de que tengas las distintas versiones idiomáticas en distintos dominios, subdominios o paths.
Espero haberte ayudado. Si te has quedado con más preguntas no dudes en seguir comentando aquí.
Excelente explicación, en ningún lugar la encontré ten bien, gracias 😉
Gracias a ti por comentar, Austry!
Buenas tardes
Espero puedas ayudarme. Tengo un dominio .online y al parecer por los resultados de google analytics, he recibido pocas visitas pero mayormente de países de habla Inglés y además de que el google research consolas me indica que no tengo etiqueta hreflang. Por esto sospecho que mi página está apareciendo para búsquedas en ingles pero está en español. Como podría solucionarlo? Colocando en la cabecera href alternate y hreflang es y seguido por el domingo en el código html de cada página? Saludos y muchas gracias de antemano
Hola Alfred,
Sólo necesitas utilizar la etiqueta ‘hreflang’ si tienes un sitio web en varios idiomas, que al parecer no es tu caso por lo que me cuentas. Es muy probable que el tráfico que veas en Analytics de otros paises sea tráfico Spam. Mira los términos por los que la gente te encuentra en Google utilizando el informe de Search Console, verás como no encontrarás términos en Inglés. Utiliza filtros en Analytics para eliminar tráfico Spam.
Un saludo y gracias por comentar.
Hola Sergio muy buena explicación y despeje bastante dudas, pero no se que hacer en el caso de tener varios subdominos una para cada país, todos de contenido distinto pero estructura similar al ser una pagina de avisos clasificados , mi consulta es si cada su dominio debe tener una etiqueta canónica propia siendo el principal dominio.com y los subdominios
ar.dominio.com
ec.dominio.com
cl.dominio.com
pe.dominio,com
co.dominio.com
mx.dominio.com
debería apuntar a la pagina principal de cada uno o a la pagina principal de dominio principal dominio.com ?
Saludos y de antemanos gracias por tu respuesta
Hola Carlos,
Gracias por comentar. Si el contenido es completamente distinto no tienes porque utilizar la etiqueta hreflang, ya que no tienes que dar ningún aviso de contenido duplicado, ya que no hay contenido duplicado. Sólo tendrías que ponerlo en las páginas en las que el contenido se duplique. Por ejemplo, la ‘home’ de cada uno de tus subdominios.
Hola, quiero implementar las etiquetas canonical y de idioma pero estoy confundida. Tengo mi sitio en ingles y en español, son dos páginas diferentes con el mismo contenido en dos idiomas. Para mi no serian duplicadas sino canonical cada una no? entonces el código quedaria asi?
En la página en español:
En la página en inglés:
¿Sería esto correcto? muchas gracias de antemano
Perdona, no veo el código que propones para cada idioma. En resumen, deberás tener una etiqueta Hreflang en cada pagina apuntandose a sí misma y su duplicada en el otro idioma. Esto en ambos dominios. De esta manera Google entenderá que ambas son contenido original pero en distintos idiomas y, por tanto, mostrará un ersultado u otro en las SERP en función del idioma de la persona que está realizando la búsqueda. Por otra parte, también es buena práctica añadir las etiquetas canonical en todas las páginas de todos tus dominios para crear contenido duplicado dentro de cada idioma. A veces este contenido se crea sin querer al añadir parámetros de url por ejemplo, de ahí que sea una buena práctica, te evitas disgustos.
Hola Sergio,
Tengo una web con varios idiomas en Español, Español de España, Español de México, Español de Chile, como debo usar la etiqueta Canonical en este caso.
También tenemos otros idiomas, Francés, Inglés, la página canonical de cada uno de estos otros idiomas que no es Español es su misma página en Inglés o en Francés?
Gracias por tu respuesta.
Hola Tatiana,
Existen etiquetas especificas para Español de Colombia, Mexico, etc. Te dejo aquí algún ejemplo:
Si vas a escribir el mismo artículo varias veces en las versiones de la web de los distintos paises, sí, es necesario implementar este etiquetado, al igual que con francés, inglés, etc.
Todas estas páginas, tanto las de español como las de otros idiomas, deben también llevar su etiqueta canonical apuntándose a si mismas a la URL que quieras que posicione (sin parámetros etc).
Espero haber respondido a tu pregunta.
Gracias, un saludo.
Muchas gracias Sergio, por tu explicación por favor podrías enviar el ejemplo porque no puedo verlo.
Un saludo,
Sí, perdona:
link rel = “alternate” href = “https://rockcontent.com” hreflang = “es-co”
link rel = “alternate” href = “https://rockcontent.com” hreflang = “es-mx”
Gracias Sergio,
Entiendo entonces que cada una de esta URL tendrían una etiqueta canonical ¿verdad?
Gracias por tu aclaración.