Cinco conflitos de canonical que o Google decide por você
A palavra é do próprio Google: uma sugestão, não uma regra. Estes são os cinco pontos em que os seus sinais brigam entre si.
Uma tag canonical é uma sugestão, não uma regra. É o que diz a própria página de canonicalização do Google, que escolhe sozinho a URL canônica a partir de redirecionamentos, presença no sitemap, preferência por HTTPS e clusters de hreflang, além da sua tag. Quando esses sinais se contradizem, a sua tag pode perder. Estes são os cinco conflitos que causam isso.
A tag canonical é uma ordem ou uma sugestão?
Uma sugestão. A página What is canonicalization diz com todas as letras que indicar uma preferência canônica é uma sugestão, não uma regra. O Google agrupa as páginas que lê como duplicadas e marca a que considera mais completa e útil para quem pesquisa. Sua tag é apenas uma entrada dessa decisão, e ela ocupa um lugar definido numa ordem publicada.
| Sinal | Força | O que o Google diz |
|---|---|---|
| Redirecionamentos | Forte, citado primeiro | Sinal forte de que o destino do redirecionamento deve se tornar canônico |
| Anotação rel=canonical | Forte, citado em segundo | Sinal forte de que a URL especificada deve se tornar canônica |
| Presença no sitemap | Fraco | Ajuda as URLs do sitemap a se tornarem canônicas, mas o Google ainda determina quais são as duplicadas |
| HTTPS acima de HTTP | Sinal de configuração do site | O Google prefere páginas HTTPS como canônicas, exceto quando há sinais conflitantes |
| Fazer parte de um cluster hreflang | Sinal de configuração do site | O Google prefere URLs que fazem parte de clusters hreflang |
Duas recomendações merecem ficar à vista antes dos conflitos. Não use o robots.txt para canonicalizar, porque o Google pode indexar uma URL bloqueada mesmo assim, só que sem o conteúdo dela. E não declare URLs canônicas diferentes para a mesma página usando técnicas diferentes.
Uma canonical pode apontar para página com noindex, bloqueada ou redirecionada?
Pode, e cada versão disso enfraquece a tag. O Google não recomenda usar noindex para escolher a canônica dentro de um mesmo site, porque isso bloqueia a página inteira na Pesquisa, e aponta o rel=canonical como a solução preferida. Apontar para uma URL bloqueada no robots.txt é pior ainda: a documentação de noindex é explícita ao dizer que um rastreador incapaz de buscar a página nunca chega a ver regra nenhuma nela.
Os redirecionamentos são o caso sutil, porque ficam acima das tags canonical na ordem do próprio Google. A documentação desenvolve um único cenário: uma página HTTPS que redireciona o usuário para HTTP ou através de HTTP, ou que leva uma canonical para a versão HTTP, aparece como sinal conflitante, e redirecionamentos de HTTPS para HTTP fazem o Google preferir HTTP com muita força. Fora esse exemplo, a documentação não diz o que acontece quando uma canonical aponta para uma URL que redireciona, então rastreie o destino você mesmo com o nosso verificador de redirecionamentos e aponte a tag para a URL que responde 200.
O que acontece quando sitemap e tag canonical se contradizem?
As práticas recomendadas do Google citam esse caso sem rodeios: não indique uma URL no sitemap e outra para a mesma página no rel=canonical. A presença no sitemap é o mais fraco dos dois sinais, então a tag costuma prevalecer, mas toda URL enviada é sugerida como canônica e o Google ainda precisa decidir quais são as duplicadas. A correção é sem graça: gere o sitemap a partir da mesma fonte que escreve as tags canonical e confira o arquivo com o nosso validador de sitemap. O que deve entrar nele está no guia de boas práticas de sitemap.
rel=canonical pode entrar em conflito com hreflang?
Com frequência, e é o conflito que mais machuca sites multilíngues. A instrução do Google é indicar uma página canônica no mesmo idioma, ou no melhor idioma substituto quando não existe uma naquele idioma. Se a canonical da sua página em português aponta para a inglesa, você pediu ao Google que descartasse a portuguesa.
Mais dois detalhes das mesmas páginas. Uma anotação rel=canonical com os atributos hreflang, lang, media ou type não é usada para canonicalização, esse é o papel do rel=alternate. E pertencer ao cluster já é um sinal: o exemplo do Google são uma página de-de e uma de-ch que se referenciam e por isso são preferidas como canônicas diante de uma de-at que ficou fora do cluster. Os erros de anotação que quebram clusters assim estão no nosso guia de hreflang.
É preciso ter uma canonical autorreferente?
O Google recomenda. As práticas recomendadas pedem um link rel=canonical na própria página canônica, o que se chama canonical autorreferente.
O estrago de verdade vem dos templates que montam a tag a partir da URL da requisição. Alguém chega com um parâmetro de rastreamento e a tag passa a apontar para aquela variante com parâmetro, de modo que cada clique em anúncio declara a própria canônica. O exemplo do Google de URL que você preferiria não ver nos resultados é uma página de produto com parâmetro gclid. Mais duas exigências da mesma página: use URLs absolutas em vez de relativas e nunca aponte uma canonical para um fragmento de URL, algo que o Google em geral não suporta.
A tag canonical funciona fora do head ou via JavaScript?
Fora do head, não. O Google afirma que o elemento link rel=canonical só é aceito quando aparece na seção <head> do HTML, e acrescenta que ao menos essa seção precisa ser HTML válido. É aí que quebra: uma tag não fechada empurra a sua canonical para o body, onde ela não vale nada.
JavaScript é aceito, mas desencorajado. A página de fundamentos de SEO para JavaScript diz que a Pesquisa Google captura a canonical injetada ao renderizar. Já a página de canonicalização pede que você defina a URL no código-fonte HTML e garanta que o JavaScript não a troque por outra. Se não der para colocar no código-fonte, deixe-a totalmente de fora dele e defina apenas via JavaScript. De um jeito ou de outro, publique só uma: o Google avisa que tags rel=canonical múltiplas ou conflitantes podem levar a resultados inesperados.
Como descobrir qual canônica o Google escolheu?
A ferramenta de inspeção de URL do Search Console mostra a canônica escolhida pelo Google ao lado da que você declarou. A página de solução de problemas acrescenta algo que vale saber antes de refazer templates: mesmo depois de corrigir o conteúdo, o Google pode manter páginas em um cluster de duplicadas por até duas semanas, e elas saem mais rápido quando a diferença é clara e significativa. Nada disso importa se o rastreador não alcança a página, e isso são cinco minutos olhando o seu robots.txt.