Canonical

Canonical apontando pro vercel.app (ou pro lugar errado): como corrigir

Uma variável de ambiente errada e todas as páginas passam a dizer pro Google que a versão oficial está em outro domínio. Como achar, corrigir e confirmar.

Equipe VarridaAtualizado em 6 min de leitura
Placa de madeira com duas setas apontando pra lados opostos
Neste artigo
  1. O que o canonical faz (e o que ele não faz)
  2. Os sinais de que o canonical está errado
  3. Como checar
  4. O caso do vercel.app
  5. O caso de todas as páginas apontando pra home
  6. Outros erros comuns
  7. As regras de um canonical certo
  8. Depois de corrigir
  9. Perguntas frequentes

Resposta curta

Se o canonical do seu site aponta pra projeto.vercel.app, pra um staging ou pra home, o Google pode indexar o endereço errado e esconder o certo. Quase sempre o domínio vem de uma variável de ambiente, como VERCEL_URL, que muda a cada deploy. Troque por um endereço fixo de produção, faça cada página apontar pra si mesma em URL absoluta e confira no Search Console qual canonical o Google escolheu.

O que o canonical faz (e o que ele não faz)

Quando o mesmo conteúdo responde em mais de um endereço, o Google escolhe um pra mostrar nos resultados. A tag canonical é como você diz qual prefere:

<link rel="canonical" href="https://seusite.com.br/produtos/tenis-azul">

Ela é uma sugestão forte, não uma ordem. O Google também olha redirects, links internos, o sitemap e se a página é https. Quando os sinais concordam, ele segue o canonical. Quando discordam, ele decide sozinho, e nem sempre a seu favor.

O perigo é quando a sugestão está errada e os outros sinais não são fortes o bastante pra desmenti-la. Aí o Google obedece: indexa o endereço que você apontou e deixa o seu de fora.

Os sinais de que o canonical está errado

  • No Google, aparece projeto.vercel.app (ou .netlify.app, .pages.dev, staging.) no lugar do seu domínio.
  • No Search Console, muitas páginas em "Página alternativa com tag canônica adequada". Esse status é normal pra versões duplicadas de verdade, mas não pras suas páginas principais.
  • Páginas em "Duplicada, o Google escolheu uma canônica diferente da do usuário": o Google discordou de você.
  • Só a home aparece no Google, e as páginas internas não entram nunca.

Como checar

  1. No código-fonte (Ctrl+U), procure rel="canonical". O endereço tem que ser exatamente o da página aberta: mesmo domínio, mesmo protocolo, mesmo caminho.
  2. No terminal, compare várias páginas de uma vez:
    for p in / /sobre /blog /produtos/tenis-azul; do
      printf "%s -> " "$p"
      curl -s "https://seusite.com.br$p" | grep -io '<link[^>]*canonical[^>]*>' | grep -o 'href="[^"]*"'
    done
  3. No cabeçalho. O canonical também pode vir como Link: <https://...>; rel="canonical". Confira com curl -sI.
  4. Na Inspeção de URL do Search Console, compare o "URL canônico declarado pelo usuário" com o "URL canônico selecionado pelo Google". Se forem diferentes, o Google discordou, e vale entender por quê.

A ferramenta verificar canonical faz a mesma comparação pra você, página por página.

O caso do vercel.app

É o erro mais comum em sites Next.js hospedados na Vercel, e acontece porque o código monta o canonical com a variável errada:

// app/layout.tsx (errado)
export const metadata = {
  metadataBase: new URL(`https://${process.env.VERCEL_URL}`),
};

VERCEL_URL é o endereço daquele deploy específico, algo como projeto-a1b2c3-time.vercel.app. Em produção, ela não é o seu domínio. Resultado: toda página declara como oficial um endereço de deploy que nem existe mais no próximo push.

O certo é usar um endereço fixo de produção:

// app/layout.tsx (certo)
const SITE = process.env.NEXT_PUBLIC_SITE_URL ?? "https://seusite.com.br";

export const metadata = {
  metadataBase: new URL(SITE),
};

Defina NEXT_PUBLIC_SITE_URL só no ambiente de produção. Se preferir uma variável da própria Vercel, VERCEL_PROJECT_PRODUCTION_URL traz o domínio de produção do projeto, sem o https://. O mesmo raciocínio vale pra URL e DEPLOY_PRIME_URL na Netlify e CF_PAGES_URL na Cloudflare Pages: são endereços de deploy, não de produção.

O caso de todas as páginas apontando pra home

Outro clássico do Next.js. Alguém coloca o canonical no layout raiz, achando que vale só pra home:

// app/layout.tsx (errado: vale pra TODAS as páginas)
export const metadata = {
  alternates: { canonical: "/" },
};

Como o layout é herdado, cada página do site passa a dizer que a versão oficial dela é a home. O Google conclui que só a home importa. A correção é declarar o canonical em cada página, com o próprio caminho:

// app/produtos/[slug]/page.tsx
export async function generateMetadata({ params }) {
  const { slug } = await params;
  return { alternates: { canonical: `/produtos/${slug}` } };
}

Com o metadataBase certo, o Next transforma esse caminho em URL absoluta. O mesmo erro aparece em temas de WordPress e em templates de outros frameworks que gravam o canonical fixo no cabeçalho do site.

Outros erros comuns

  • Protocolo ou www trocados. O site responde em https://seusite.com.br, mas o canonical diz http://www.seusite.com.br. No WordPress, confira Configurações › Geral: o "Endereço do WordPress" e o "Endereço do site" têm que ser o domínio final, com https.
  • Barra no final. O canonical diz /sobre/, o site redireciona pra /sobre. A página oficial passa a ser um endereço que redireciona. Escolha um padrão e use em tudo.
  • Duas tags canonical. Tema e plugin de SEO adicionando uma cada, às vezes com valores diferentes. Com duas, o Google pode ignorar as duas.
  • Canonical pra página que não pode ser indexada. Apontar pra uma URL com noindex, que dá 404 ou que está bloqueada no robots.txt manda sinais contraditórios.
  • Paginação toda apontando pra página 1. A página 2 de uma categoria tem produtos diferentes da página 1, então ela deve apontar pra si mesma.
  • Canonical relativo ou fora do <head>. O Google aceita caminhos relativos, mas eles quebram fácil quando o site responde em mais de um domínio. E uma tag canonical no <body> é ignorada.

As regras de um canonical certo

RegraExemplo certo
URL absoluta, com protocolohttps://seusite.com.br/sobre
Domínio de produção, nunca o de deployNada de .vercel.app ou staging.
A própria página, salvo duplicata real/sobre aponta pra /sobre
Endereço que responde 200, sem redirectMesmo padrão de barra e de www do site
Página indexávelSem noindex e liberada no robots.txt
Uma tag só, dentro do <head>Sem duplicata de tema e plugin
Coerente com o sitemap e os links internosO sitemap lista a mesma URL do canonical

Depois de corrigir

Publique, confira o código-fonte em algumas páginas de cada tipo e rode a Inspeção de URL na home e nas páginas principais. O "URL canônico selecionado pelo Google" só muda quando o Google rastrear a página de novo, então peça indexação das mais importantes e reenvie o sitemap. Se o domínio de preview chegou a ser indexado, ele sai sozinho conforme o Google reprocessa as páginas, e ajuda se o preview mandar X-Robots-Tag: noindex, como a Vercel já faz.

Pra não depender de lembrar disso a cada deploy, a varredura grátis da Varrida confere o canonical de cada página da amostra e avisa quando ele aponta pra outro domínio ou falta.

Perguntas frequentes

O Google sempre obedece o canonical?

Não. O canonical é uma sugestão forte. O Google também considera redirects, links internos, o sitemap e o https. Quando esses sinais discordam do canonical, ele pode escolher outra URL, e o Search Console mostra isso como "Duplicada, o Google escolheu uma canônica diferente da do usuário".

Toda página precisa de canonical?

Não é obrigatório, mas é recomendado. Um canonical apontando pra própria página evita que versões com parâmetros, com e sem barra ou com e sem www sejam tratadas como páginas diferentes.

Posso usar canonical relativo?

O Google aceita, mas a URL absoluta, com https e domínio de produção, é mais segura. Caminhos relativos quebram fácil quando o site responde em mais de um domínio, como no preview e na produção.

O domínio vercel.app foi indexado. Como tiro do Google?

Corrija o canonical pra apontar pro domínio de produção e garanta que as URLs de preview respondam com X-Robots-Tag: noindex, como a Vercel já faz por padrão. Conforme o Google rastrear de novo, ele troca as URLs. Pra pressa, use a Inspeção de URL nas páginas principais do seu domínio.

Fontes

Publicado em 8 de outubro de 2026. Viu algo desatualizado? Escreve pra contato@varrida.com.

Varredura grátis

Veja o que o Google enxerga no seu site.

Cole o endereço e, em menos de 1 minuto, veja a nota e os problemas mais graves, cada um com a correção. Sem cadastro.

  • Grátis
  • Sem cadastro
  • Menos de 1 minuto
Continue lendo

Outros guias do blog