No App Router nós escolhemos entre app/robots.txt e uma rota gerada em app/robots.ts ou app/robots.js.
Preferimos estático quando basta
Um arquivo simples reduz dependências e facilita auditoria.
Usamos MetadataRoute.Robots para geração
import type { MetadataRoute } from 'next'
export default function robots(): MetadataRoute.Robots {
return { rules: { userAgent: '*', allow: '/' }, sitemap: 'https://example.com/sitemap.xml' }
}
Conferimos cache e dynamic
Rotas geradas podem ter comportamento de cache conforme a implementação. Nós verificamos a documentação e o deploy real.
Preview precisa de acesso real
Ambientes privados usam autenticação. Também evitamos gerar Sitemap: apontando para domínio de preview.
Validamos produção
Abrimos /robots.txt, usamos o validator e o tester. Divergências levam a revisar routing, environment variables, cache e deploy.