Erros de hreflang: o que significam e como corrigi-los

A maioria dos erros de hreflang resume-se a uma coisa: as versões linguísticas de uma página não estão de acordo entre si, por isso os motores de pesquisa não conseguem confiar no que indicam. Comece por corrigir esses erros, em particular as ligações de retorno em falta e as páginas que não se incluem a si próprias. Normalmente, resultam de uma única definição de modelo ou de plug-in, pelo que os corrige uma vez, em vez de página a página. Eis o que significa cada erro, pela ordem em que eu os resolveria.

Antes de começar: verifique duas páginas

O hreflang é um conjunto de ligações que indica aos motores de pesquisa qual a versão linguística de uma página que devem mostrar a cada pessoa. Os problemas surgem muitas vezes na relação entre duas páginas, por isso verifique uma página e uma das suas traduções, e não apenas a página inicial.

O verificador de hreflang, que é gratuito, lê as etiquetas de uma página no cabeçalho HTML e no cabeçalho HTTP Link. Em seguida, abre até 20 das versões linguísticas para ver se respondem e incluem uma ligação de retorno. Há uma limitação a ter em conta: não lê o mapa do site XML. Se o seu hreflang estiver apenas no mapa do site, o relatório indicará que não encontrou nenhum. Isso não significa que a configuração esteja errada. Verifique essas entradas à luz das regras abaixo.

Os erros a corrigir primeiro

Estes erros podem levar os motores de pesquisa a ignorar o hreflang de uma página ou de um par de páginas.

Uma versão linguística não inclui uma ligação de retorno ("ligação de retorno em falta"). Se a sua página em inglês indicar a página em alemão como a versão alemã, a página em alemão também tem de indicar a página em inglês. Quando a ligação só funciona num sentido, os motores de pesquisa podem ignorar o par. Isto acontece normalmente quando uma língua foi adicionada mais tarde ou quando apenas a língua principal tem as etiquetas. Solução: todas as versões devem incluir a mesma lista completa.

A página não se inclui a si própria. Cada página indica todas as suas versões, incluindo a própria. Solução: adicione o URL da própria página à lista. Se o relatório indicar que a página se inclui a si própria "apenas com uma barra final diferente", use o endereço exato em que a página responde. Para um motor de pesquisa, /de e /de/ são dois URLs.

Uma versão linguística não responde com o código 200. Uma ligação para uma página que devolve um erro 404 ou um erro do servidor é um beco sem saída. Isto acontece muitas vezes quando uma página só existe em algumas línguas, mas um modelo lista todas as línguas. Solução: indique apenas as línguas em que a página existe ou publique a versão em falta.

O URL canónico aponta para outra página. Os motores de pesquisa ignoram o hreflang numa página que não seja canónica. O caso clássico é todas as traduções terem um URL canónico que aponta para a página na língua principal, o que indica aos motores de pesquisa que as traduções não são as páginas verdadeiras. Solução: o URL canónico de cada versão linguística deve apontar para si próprio.

Um código de idioma está errado. Os dois casos mais comuns:

  • en-UK não é válido, porque o código de país do Reino Unido é GB. Use en-GB.
  • en_US não é válido, porque o hreflang usa um hífen. Use en-US.

Os códigos de idioma seguem a norma ISO 639-1, com um código de país ISO 3166-1 opcional a seguir, como de ou de-AT. Um país, por si só, não é uma língua.

Um URL é relativo ou está vazio. Os URLs hreflang têm de ser absolutos, com https:// e o domínio. /de/pricing não é suficiente.

As etiquetas estão no corpo da página. Os motores de pesquisa só leem ligações hreflang no <head>. Uma causa comum é uma etiqueta ou um script perdido que fecha o cabeçalho demasiado cedo, ou um tema que apresenta as etiquetas demasiado tarde.

Uma língua aponta para dois URLs diferentes. Cada língua deve ter um único endereço por conjunto. Procure dois sistemas a escrever etiquetas ao mesmo tempo, como um tema e um plug-in.

Avisos que vale a pena corrigir quando lá chegar

Nem sempre causam problemas, mas é fácil eliminá-los:

  • Sem x-default. Indica a página destinada aos visitantes cuja língua não é disponibilizada, muitas vezes a página na língua principal ou um seletor de idioma. É opcional, mas recomendado.
  • <html lang> não corresponde. Uma página identificada como alemã com <html lang="en"> transmite sinais contraditórios. Normalmente, trata-se de um valor predefinido do modelo que ninguém alterou.
  • Uma versão linguística redireciona. Ligue ao endereço final, não a um endereço que redireciona para ele. As causas mais comuns são ligações http:// e a ausência de www.
  • Uma versão linguística indica um conjunto diferente de línguas. Uma página indica cinco línguas e a respetiva tradução indica quatro. Muitas vezes, é sinal de que uma língua foi adicionada a algumas páginas, mas não às restantes.
  • O mesmo URL é indicado para várias línguas. É possível que vários países partilhem uma página (de-DE, de-AT), mas uma lista em que todas as línguas apontam para o mesmo endereço costuma significar que as traduções nem sequer são páginas separadas.
  • O HTML e o cabeçalho HTTP não coincidem. Escolha um método e utilize-o de forma consistente.

Aspeto de um conjunto correto

Numa página em inglês e alemão, ambas as páginas têm o mesmo bloco no <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" />

O URL canónico da página em inglês é https://example.com/pricing. O URL canónico da página em alemão é https://example.com/de/preise. É só isto: a mesma lista em ambas, endereços completos, códigos válidos e cada página com um URL canónico que aponta para si própria. O gerador na página do verificador cria este bloco e as entradas correspondentes no mapa do site a partir da lista de línguas e URLs.

Corrija a origem, não a página

Num site de qualquer dimensão, ninguém devia editar o hreflang manualmente. Quando uma verificação falhar, descubra o que está a escrever as etiquetas:

  1. Um tema ou modelo. Uma única correção abrange todas as páginas, o que é uma boa notícia.
  2. Um plug-in. Comece por procurar uma definição e confirme também que outro plug-in ou o tema não estão a escrever etiquetas.
  3. Um gerador de mapas do site. Volte a gerá-lo depois de qualquer alteração às línguas.
  4. Um site criado manualmente. Pondere gerar a lista a partir de uma única tabela de páginas e línguas, para que uma nova língua não seja aplicada apenas a metade do site.

Depois, volte a executar a verificação nas mesmas duas páginas, mais uma página que tenha adicionado recentemente. É nas páginas novas que o problema costuma voltar a surgir.

Não espere que os resultados de pesquisa mudem no próprio dia. Primeiro, os motores de pesquisa têm de voltar a rastrear as páginas. Além disso, o hreflang é um sinal, não uma ordem, pelo que etiquetas corretas não garantem qual a versão que será apresentada em cada pesquisa. Se, mesmo assim, a versão na língua errada continuar bem posicionada, verifique se a página correta tem conteúdo verdadeiro e completo e se as outras páginas têm ligações para ela. O nosso guia sobre como adicionar uma segunda língua aborda essa configuração mais abrangente.

Se preferir não voltar a preocupar-se com isto

Integrei esta funcionalidade no FolioPress porque o hreflang implica muitas regras para algo que devia ser invisível. Todas as páginas recebem as respetivas etiquetas automaticamente, na página e no mapa do site, com ligações de retorno, x-default, URLs canónicos autorreferenciais e um endereço traduzido por língua. Uma página só indica as línguas para as quais tem uma versão, pelo que uma tradução em falta não se transforma numa ligação sem saída.

No entanto, só ajuda se criar o seu site no FolioPress. Não corrige o hreflang num site alojado noutro serviço. Se, de resto, o seu site atual está bem, corrigir o modelo é a opção mais económica. Se este for o segundo ou terceiro problema causado por um plug-in de idiomas este ano, os planos começam nos 12 € por mês, com um período de avaliação gratuita de 30 dias (preços).