technical

Sitemap no robots.txt

O MetricSpot verifica se o robots.txt tem uma linha Sitemap:. É como o Google, o Bing e a maioria dos crawlers de IA descobrem o teu sitemap automaticamente.

O que esta verificação faz

Vai buscar /robots.txt e procura uma ou mais diretivas Sitemap:. Verifica que o URL é absoluto (URLs relativos não são permitidos pela especificação) e que está acessível.

Porque é importante

A maioria dos crawlers descobre o teu sitemap de uma de três formas:

  1. Submete-lo no Google Search Console / Bing Webmaster Tools.
  2. Declará-lo no robots.txt via Sitemap:.
  3. O crawler adivinha /sitemap.xml como último recurso.

O método 2 é o que escala para crawlers com os quais não tens conta — Googlebot, Bingbot, GPTBot, ClaudeBot, PerplexityBot, Applebot, Yandex, Baidu e dezenas de indexadores menores leem todos o robots.txt antes de rastejarem o que quer que seja. Declarar lá o teu sitemap é uma linha de configuração que anuncia a localização a todos ao mesmo tempo.

Se ficar de fora, um sitemap gerado pelo CMS num URL não-padrão (/sitemap_index.xml, /wp-sitemap.xml, /sitemap-0.xml) pode nunca ser descoberto pelos crawlers menores que não tentam caminhos alternativos.

Como corrigir

Acrescenta uma linha Sitemap: a /robots.txt. Usa o URL absoluto e canónico — mesmo esquema (https), mesmo hostname (com ou sem www, igual ao teu canónico), sem redirecionamentos finais.

User-agent: *
Allow: /

Sitemap: https://example.com/sitemap.xml

Vários sitemaps são permitidos. Lista cada um, ou lista um índice de sitemaps que referencie os outros:

Sitemap: https://example.com/sitemap-pages.xml
Sitemap: https://example.com/sitemap-posts.xml
Sitemap: https://example.com/sitemap-products.xml

Regras:

  • Apenas URL absoluto. Sitemap: /sitemap.xml é inválido segundo a especificação. Alguns crawlers toleram-no, outros ignoram a diretiva por completo.
  • Faz coincidir o esquema/host canónico. Se o teu site é https://www.example.com, não declares https://example.com/sitemap.xml. O Google trata o sitemap como pertencente ao host onde está declarado.
  • A diretiva Sitemap: é global, não está limitada a um bloco User-agent:. Põe-na na sua própria linha, no topo ou no fundo do ficheiro — a posição não interessa.

nginx (servindo um robots.txt estático):

location = /robots.txt {
  alias /var/www/example.com/robots.txt;
}

Next.js (App Router) — robots.txt dinâmico:

// app/robots.ts
import type { MetadataRoute } from "next";

export default function robots(): MetadataRoute.Robots {
  return {
    rules: [{ userAgent: "*", allow: "/" }],
    sitemap: "https://example.com/sitemap.xml",
  };
}

Astro: põe um public/robots.txt literal no teu projeto, ou gera um em src/pages/robots.txt.ts:

// src/pages/robots.txt.ts
import type { APIRoute } from "astro";

export const GET: APIRoute = ({ site }) => {
  const body = `User-agent: *
Allow: /

Sitemap: ${new URL("sitemap-index.xml", site).href}
`;
  return new Response(body, { headers: { "Content-Type": "text/plain" } });
};

Se usares @astrojs/sitemap, ele emite sitemap-index.xml — aponta a diretiva para o índice, não para os sitemaps individuais.

WordPress: o Yoast SEO e o Rank Math adicionam ambos a linha Sitemap: ao robots.txt virtual automaticamente. Se tiveres um ficheiro /robots.txt real em disco, o plugin não consegue substituí-lo — ou apagas o ficheiro ou acrescentas a linha Sitemap: manualmente.

Cloudflare Workers / Pages: o robots.txt é só texto estático — coloca-o no teu diretório public/. Se o gerares através de um Worker, define content-type: text/plain para que os crawlers o interpretem corretamente.

Combina com Ficheiro robots.txt, Sitemap XML e Permitir crawlers de IA — os três juntos cobrem toda a superfície de descoberta para rastreamento.

Perguntas frequentes

Ainda preciso de submeter o sitemap no Search Console se já estiver no robots.txt?

Sim, para o Google. A submissão no Search Console dá-te estatísticas de indexação por sitemap, relatórios de erros e diagnósticos “descoberto, não indexado” que a descoberta automática não dá. Usa ambos — robots.txt para o resto da web, Search Console para a visibilidade especificamente sobre o Google.

Posso ter mais do que uma linha Sitemap:?

Sim. A especificação permite várias declarações de sitemap. Ou listas todas, ou listas um ficheiro de índice de sitemaps que referencie as outras (mais limpo, mais fácil de manter).

E se o URL do meu sitemap mudar?

Atualiza a linha Sitemap: e o Googlebot apanha-a da próxima vez que ler o robots.txt (geralmente em 24 horas). Se tens um sitemap antigo submetido no Search Console, remove-o manualmente — o robots.txt só diz aos crawlers onde está o novo, não invalida o antigo.

Fontes

Última atualização 2026-05-11