Pular para o conteúdo principal

Hreflang vs Canonical: como funcionam juntos no SEO internacional

Entenda a relação entre hreflang e tags canonical. Saiba quando entram em conflito e como evitar erros.

Hreflang Generator Team

O que é uma tag Canonical?

Antes de examinar como hreflang e canonical interagem, vale a pena estabelecer o que cada um faz de forma independente.

Uma tag canonical (<link rel="canonical">) informa aos mecanismos de busca qual URL é a versão preferida de uma página para fins de indexação. Quando múltiplas URLs servem conteúdo idêntico ou muito semelhante, a tag canonical consolida os sinais de ranqueamento em uma única URL, prevenindo a diluição por conteúdo duplicado.

<link rel="canonical" href="https://example.com/en/products/widget/" />

Por exemplo, se sua página de produto é acessível tanto em https://example.com/en/products/widget/ quanto em https://example.com/en/products/widget/?ref=newsletter, a tag canonical em ambas as URLs deve apontar para a versão limpa sem o parâmetro de consulta. Isso diz ao Google: "Trate estas como a mesma página e consolide sua força de ranqueamento."

Tags canonical são um sinal forte que o Google geralmente respeita (embora não seja uma diretiva -- o Google pode sobrescrever seu canonical se detectar inconsistências).

O que é Hreflang?

Hreflang (<link rel="alternate" hreflang="...">) informa aos mecanismos de busca que uma página possui versões equivalentes em outros idiomas ou regiões. Ele não controla a indexação -- controla qual versão aparece nos resultados de busca com base no idioma e na localização do usuário.

<link rel="alternate" hreflang="en" href="https://example.com/en/products/widget/" />
<link rel="alternate" hreflang="de" href="https://example.com/de/produkte/widget/" />
<link rel="alternate" hreflang="es" href="https://example.com/es/productos/widget/" />

Hreflang diz: "Estas três páginas são o mesmo conteúdo para públicos diferentes." Não diz nada sobre qual URL deve ser indexada.

Como Hreflang e Canonical funcionam juntos

É aqui que surge a maior confusão. Hreflang e canonical servem a propósitos complementares, porém diferentes:

| Sinal | Propósito | Escopo | |-------|-----------|--------| | Canonical | "Esta é a URL preferida para indexação" | Dentro de um único idioma | | Hreflang | "Estas são as variantes de idioma/região" | Entre idiomas |

A regra fundamental é: cada versão localizada deve ter um canonical autorreferencial que aponte para si mesma. O canonical da página em inglês aponta para a URL em inglês. O canonical da página em alemão aponta para a URL em alemão. O canonical da página em espanhol aponta para a URL em espanhol.

Aqui está a implementação correta para uma página disponível em três idiomas:

Página em inglês em https://example.com/en/products/widget/:

<link rel="canonical" href="https://example.com/en/products/widget/" />
<link rel="alternate" hreflang="en" href="https://example.com/en/products/widget/" />
<link rel="alternate" hreflang="de" href="https://example.com/de/produkte/widget/" />
<link rel="alternate" hreflang="es" href="https://example.com/es/productos/widget/" />
<link rel="alternate" hreflang="x-default" href="https://example.com/en/products/widget/" />

Página em alemão em https://example.com/de/produkte/widget/:

<link rel="canonical" href="https://example.com/de/produkte/widget/" />
<link rel="alternate" hreflang="en" href="https://example.com/en/products/widget/" />
<link rel="alternate" hreflang="de" href="https://example.com/de/produkte/widget/" />
<link rel="alternate" hreflang="es" href="https://example.com/es/productos/widget/" />
<link rel="alternate" hreflang="x-default" href="https://example.com/en/products/widget/" />

Página em espanhol em https://example.com/es/productos/widget/:

<link rel="canonical" href="https://example.com/es/productos/widget/" />
<link rel="alternate" hreflang="en" href="https://example.com/en/products/widget/" />
<link rel="alternate" hreflang="de" href="https://example.com/de/produkte/widget/" />
<link rel="alternate" hreflang="es" href="https://example.com/es/productos/widget/" />
<link rel="alternate" hreflang="x-default" href="https://example.com/en/products/widget/" />

Observe o padrão: o canonical é sempre autorreferencial, enquanto o conjunto hreflang é idêntico nas três páginas (garantindo reciprocidade completa).

Quando Hreflang e Canonical entram em conflito

Conflitos ocorrem quando a tag canonical de uma página aponta para uma URL em um idioma diferente. Este é o erro mais prejudicial na implementação de tags de SEO internacional.

O erro do Canonical entre idiomas

Considere esta implementação incorreta:

Página em alemão em https://example.com/de/produkte/widget/:

<!-- ERRADO: canonical aponta para a versão em inglês -->
<link rel="canonical" href="https://example.com/en/products/widget/" />
<link rel="alternate" hreflang="de" href="https://example.com/de/produkte/widget/" />
<link rel="alternate" hreflang="en" href="https://example.com/en/products/widget/" />

Isso diz ao Google: "A página em alemão é uma duplicata da página em inglês. Por favor, indexe apenas a URL em inglês." O Google então desindexará a página em alemão e mostrará a URL em inglês aos usuários alemães. O hreflang é ignorado porque o canonical efetivamente declarou que a página em alemão não existe do ponto de vista da indexação.

Este erro é surpreendentemente comum e frequentemente decorre de:

Como o Google lida com o conflito

Quando o Google encontra um canonical entre idiomas com hreflang:

  1. O sinal canonical vence porque é um sinal mais forte que o hreflang
  2. O Google consolida a indexação na URL canonical (a página em inglês)
  3. A página em alemão efetivamente desaparece do índice do Google
  4. Usuários alemães pesquisando em alemão veem a página em inglês nos resultados (ou nenhum resultado se a página em inglês não ranqueia para consultas em alemão)
  5. Toda a autoridade de ranqueamento dos backlinks para a página em alemão flui para a página em inglês, que de qualquer forma não consegue ranquear nos resultados de busca em alemão

O resultado: você perde completamente sua presença de busca no mercado alemão.

Padrões de uso correto

Padrão 1: Canonical autorreferencial por idioma

Cada página localizada possui um canonical que aponta para si mesma. Este é o padrão correto para a grande maioria dos sites internacionais.

/en/page/ -> canonical: /en/page/
/de/page/ -> canonical: /de/page/
/es/page/ -> canonical: /es/page/

Todas as três páginas compartilham o mesmo conjunto completo de hreflang. Cada página é indexada de forma independente e ranqueia em seu respectivo mercado.

Padrão 2: URLs parametrizadas com Canonical diferente

Se seu site usa parâmetros de consulta para seleção de idioma (por exemplo, ?lang=de), cada versão de idioma ainda deve ter um canonical apontando para uma URL limpa -- mas uma URL limpa em seu próprio idioma.

/page/?lang=en -> canonical: /page/?lang=en (ou /en/page/ se você tem URLs limpas)
/page/?lang=de -> canonical: /page/?lang=de (ou /de/page/ se você tem URLs limpas)

Nunca aponte o canonical de todos os parâmetros de idioma para a URL base sem parâmetro. Isso colapsa todos os idiomas em uma única URL indexada.

Padrão 3: Páginas que genuinamente são duplicatas dentro de um idioma

Às vezes você tem duplicatas genuínas dentro do mesmo idioma -- por exemplo, uma página de produto acessível por dois caminhos de categoria diferentes. Nesse caso, o canonical aponta corretamente para uma URL, e o hreflang nessa URL canonical aponta para seus equivalentes em outros idiomas.

/en/category-a/widget/ -> canonical: /en/products/widget/
/en/category-b/widget/ -> canonical: /en/products/widget/
/en/products/widget/   -> canonical: /en/products/widget/ (autorreferencial)
                          hreflang: /en/products/widget/, /de/produkte/widget/, /es/productos/widget/

O hreflang só precisa existir na URL canonical. As páginas duplicadas dentro do mesmo idioma não precisam de hreflang porque o Google as consolidará na URL canonical de qualquer forma.

Diagnosticando conflitos

Se você suspeita de conflitos entre hreflang e canonical em seu site, procure por estes sintomas:

Para auditar seu site:

  1. Faça um rastreamento do seu site com uma ferramenta que extraia tanto as tags canonical quanto as hreflang
  2. Para cada página, verifique se rel="canonical" aponta para o mesmo domínio e caminho de idioma da própria página
  3. Verifique se cada URL em cada conjunto hreflang também possui um canonical autorreferencial
  4. Confirme que nenhuma tag canonical aponte para uma URL em um diretório de idioma diferente

Conclusão

Hreflang e canonical não estão em competição. Eles resolvem problemas diferentes e devem sempre estar alinhados. A regra é simples:

Quando esses dois sinais estão alinhados, os mecanismos de busca podem indexar cada versão localizada de forma independente com confiança e mostrar a versão correta ao público adequado. Quando entram em conflito, o canonical vence e o hreflang é ignorado, o que tipicamente destrói sua visibilidade em buscas internacionais.

Use nosso Gerador de tags Hreflang para construir conjuntos de tags que sigam esses padrões corretos automaticamente. O gerador garante canonicals autorreferenciais e reciprocidade completa entre todos os idiomas do conjunto.

Related tools