Why it matters
A 404 means "crawl everything", but you lose the Sitemap directive and any explicit AI crawler policy.
How to fix it
Add app/robots.ts with a Sitemap line and an explicit policy for AI crawlers.
Example
// app/robots.ts
import type { MetadataRoute } from 'next'
export default function robots(): MetadataRoute.Robots {
if (process.env.VERCEL_ENV && process.env.VERCEL_ENV !== 'production') {
return { rules: [{ userAgent: '*', disallow: '/' }] } // previews never indexable
}
return {
rules: [{ userAgent: '*', allow: '/', disallow: ['/api/', '/account/'] }],
sitemap: 'https://acme.example/sitemap.xml',
}
}References
More seo rules
void seo reports 60 rules in this category. What search engines need from the raw response: status codes, titles and descriptions in <head>, self-referencing canonicals, one h1, crawlable links, Open Graph, icons, robots.txt and a sitemap with real dates.
apple-touch-iconapple-touch-icon missing or not a 180×180 PNGmanifestWeb app manifest missing or incompletetheme-colorNo theme-color metarobots-txt-unreachablerobots.txt returns 5xx/429 or times outrobots-txt-invalidrobots.txt serves HTML, exceeds 500 KiB, or has unparseable linesrobots-blocks-allrobots.txt disallows the site for * / Googlebot / Bingbotrobots-blocks-resourcesrobots.txt blocks JS/CSS needed to renderrobots-sitemap-directiverobots.txt has no absolute Sitemap: line