Marketing Por Equipe DevBras

Capa do artigo: Canonical aponta para a URL que você quer na busca, e ela responde 200

Canonical aponta para a URL que você quer na busca, e ela responde 200

Como declarar a URL canônica de cada página, evitar os erros que fazem a busca sumir com seus artigos e conferir no HTML final se tudo aponta para o lugar certo.

O blog tinha cem artigos e, no Search Console, só a home aparecia como indexada. O motivo estava numa linha do layout: <link rel="canonical" href="https://www.exemplo.com.br/">, igual em todas as páginas. Cada artigo dizia à busca "eu sou uma cópia da home". A resposta curta: cada página indexável declara como canônica a sua própria URL, absoluta, no host e no protocolo que você escolheu, e essa URL precisa abrir direto com status 200, sem redirecionamento e sem noindex.

Para que serve a canônica

O mesmo conteúdo costuma responder em vários endereços sem você perceber. Com e sem www. Com e sem barra no final. Com parâmetro de campanha, como ?utm_source=newsletter. Com parâmetro de ordenação numa listagem. Em http e https. Para a busca, cada um desses é uma URL diferente.

Quando encontra várias URLs com o mesmo conteúdo, o Google agrupa as cópias e escolhe uma para mostrar nos resultados. A tag canônica é a sua forma de dizer qual delas você prefere. Ela é um sinal forte, mas não uma ordem: o Google combina a canônica com outros sinais, como redirecionamentos, links internos e o sitemap. Se os sinais se contradizem, ele pode escolher outra URL.

É por isso que a canônica errada é pior que nenhuma. Sem a tag, a busca adivinha e costuma acertar. Com a tag apontando para o lugar errado, você ativamente pede que a página certa seja tratada como duplicata.

Como declarar a canônica certa

  1. Escolha um formato de URL e use em todo lugar. Decida https, com ou sem www, com ou sem barra no final. Redirecione as outras variações com 301 para esse formato.
  2. Gere a canônica a partir da rota, não de uma constante. A tag de cada página aponta para a URL limpa dela mesma, sem parâmetros de rastreamento.
  3. Use URL absoluta. Protocolo, host e caminho completos. URL relativa funciona em teoria, mas abre espaço para erro quando o site responde em mais de um host.
  4. Coloque uma só tag, dentro do head. Duas canônicas diferentes na mesma página fazem a busca desconsiderar as duas. Tag no body é ignorada.
  5. Confira que a URL canônica responde 200. Se ela redireciona, dá 404 ou tem noindex, você está mandando sinais opostos.
  6. Mantenha links internos e sitemap no mesmo formato. Menu, links entre artigos e o sitemap usam exatamente a URL canônica.

Exemplo de canônica gerada pela rota

Num servidor Express com templates, a URL base vem da configuração e o caminho vem da requisição, sem a query string:

const URL_BASE = 'https://www.exemplo.com.br';

app.use((req, res, next) => {
  res.locals.canonica = URL_BASE + req.path;
  next();
});
<link rel="canonical" href="<%= canonica %>">

Com isso, /blog/meu-artigo?utm_source=newsletter declara como canônica https://www.exemplo.com.br/blog/meu-artigo. Se a sua aplicação aceita a mesma rota com e sem barra no final, normalize antes, ou redirecione uma das formas. O host vem da configuração, nunca do cabeçalho Host da requisição, que o cliente controla.

Casos que confundem

Paginação

A página 2 de uma listagem tem conteúdo diferente da página 1. Ela deve declarar a si mesma como canônica, com o parâmetro ou o caminho da página. Apontar todas as páginas para a primeira esconde os itens que só aparecem nas seguintes.

Filtros e ordenação

Uma listagem ordenada por preço tem os mesmos itens da ordenada por data. Nesse caso, faz sentido a variação apontar para a versão padrão. Já um filtro que produz uma página com valor próprio, como uma categoria, merece canônica própria.

Conteúdo republicado

Se você publica o mesmo artigo no seu blog e numa plataforma parceira, a cópia pode apontar a canônica para o original, desde que a plataforma permita. Isso concentra os sinais no seu domínio.

Arquivos sem HTML

PDF não tem head. Para ele, o Google aceita a canônica no cabeçalho HTTP Link, com rel="canonical", configurado no servidor web.

Como conferir no HTML que o servidor entrega

O template pode estar certo e o HTML final errado, por causa de um plugin, de um cache ou de uma camada que injeta tags. Confira a página como o robô vê:

#!/usr/bin/env bash
url="https://www.exemplo.com.br/blog/meu-artigo"

canonica=$(curl -s "$url" \
  | grep -io '<link[^>]*rel="canonical"[^>]*>' \
  | grep -io 'href="[^"]*"' \
  | cut -d'"' -f2)

echo "Canônica: $canonica"
curl -s -o /dev/null -w 'Status da canônica: %{http_code}\n' "$canonica"

O resultado esperado é a própria URL do artigo e o status 200. Se aparecer 301, a canônica aponta para um endereço que redireciona: corrija o formato. Se aparecerem duas linhas de canônica, há tag duplicada. No Search Console, a inspeção de URL mostra lado a lado a canônica declarada por você e a escolhida pelo Google. Quando elas divergem, algum sinal está contradizendo a tag. Para redirecionamentos, veja como redirecionar URL do jeito certo, e para o status de resposta, códigos de status HTTP.

Erros comuns

  • Canônica fixa no layout apontando para a home. Todos os artigos viram duplicata da página inicial e somem do índice.
  • Canônica apontando para URL que redireciona. Sinais contraditórios, e o Google pode ignorar a sua escolha.
  • Canônica em http num site que serve https. A tag manda para a versão que o próprio servidor redireciona.
  • Todas as páginas da paginação apontando para a primeira. Itens das páginas seguintes perdem o caminho de descoberta.
  • Canônica com parâmetros de campanha. Cada link de newsletter vira uma versão "oficial" diferente.
  • Canônica combinada com noindex na URL de destino. Você pede para indexar uma página que pede para não ser indexada.

Checklist

  • Cada página indexável tem exatamente uma tag canônica, dentro do head.
  • A canônica é absoluta, em https, no host escolhido.
  • A canônica aponta para a própria página, sem parâmetros de rastreamento.
  • A URL canônica responde 200 direto, sem redirecionamento.
  • As variações de host, protocolo e barra redirecionam com 301 para o formato canônico.
  • Links internos e sitemap usam a mesma URL da canônica.
  • A inspeção de URL no Search Console mostra a mesma canônica declarada e escolhida.

Pegue um artigo qualquer do seu site, abra o código-fonte e copie a URL da tag canônica. Ela abre esse mesmo artigo, com status 200, ou leva você para outro lugar?

Avalie este artigo

Referência: https://developers.google.com/search/docs/crawling-indexing/canonicalization