Im App Router wählen wir zwischen statischem app/robots.txt und generiertem app/robots.ts oder app/robots.js.
Statisch ist unser Standard, wenn es reicht
Eine einfache Datei hat wenig Laufzeitlogik und lässt sich leicht auditieren.
Für Generierung nutzen wir MetadataRoute.Robots
import type { MetadataRoute } from 'next'
export default function robots(): MetadataRoute.Robots {
return { rules: { userAgent: '*', allow: '/' }, sitemap: 'https://example.com/sitemap.xml' }
}
Wir prüfen Cache und dynamic-Verhalten
Generierte Metadata-Routen können je nach Implementierung gecacht werden. Deshalb vergleichen wir Code mit der ausgelieferten Datei.
Preview braucht Zugriffsschutz
Private Previews schützen wir per Authentifizierung und verhindern Sitemap-URLs mit Preview-Host.
Wir verifizieren das Deployment
Nach dem Release öffnen wir /robots.txt, nutzen den Validator und testen URLs im Tester. Bei Abweichungen prüfen wir Routing, Environment-Variablen, Cache und Deployment.
Aktuelles App-Router-Verhalten
Next.js unterstützt app/robots.txt statisch sowie app/robots.ts oder app/robots.js mit MetadataRoute.Robots. Generierte Metadata-Routen können abhängig von der Implementierung gecacht werden. Deshalb prüfen wir Framework-Version und Live-Antwort statt anzunehmen, dass jede Änderung pro Request neu berechnet wird.
Für stabile Policies bevorzugen wir statische Dateien. Generierung nutzen wir nur bei echtem Mehrwert, etwa mehreren Crawler-Gruppen oder kontrollierter Umgebungslogik. Externe API-Aufrufe vermeiden wir, damit robots.txt nicht von einem langsamen Konfigurationsdienst abhängt.
Typische Release-Fehler
Wir testen Preview-Host im Sitemap-Feld, Middleware/Proxy auf /robots.txt, konkurrierende statische und generierte Dateien, veralteten Cache und versehentlich aktive Staging-Zweige. Der Smoke-Test prüft Status, Content-Type, Body und Produktionshostname direkt auf dem öffentlichen Host.