Blog Ressourcen Über Suche Themen
Next.js Troubleshooting

Fix: Google Search Console "Couldn't Fetch Sitemap" auf Next.js (App Router)

Aktualisiert am 10. Oktober 2025

Kategorie: Next.js Troubleshooting
Teilen

Next.js Sitemap-Fehlersuche für Google Search Console

Wenn Sie schon die Haare raufen, weil Sie den Fehler “Couldn’t fetch sitemap” in Google Search Console für Ihr Next.js-Projekt sehen, sind Sie nicht allein. Dieser frustrierende Google Search Console Sitemap-Fehler kann verhindern, dass Google Ihre Website korrekt indexiert, was Ihre Sichtbarkeit beeinträchtigt. Viele Entwickler, die den Next.js App Router verwenden, sind auf diese Next.js Sitemap-Fehlersuche-Herausforderung gestoßen, bei der GSC die Sitemap nicht lesen kann, auch wenn sie im Browser zugänglich erscheint.

Glücklicherweise hat die Entwicklergemeinschaft eine zuverlässige Lösung ausfindig gemacht. Dieser Leitfaden führt Sie durch die genauen Schritte, um den Fehler “Couldn’t fetch” zu beheben, basierend auf einer hilfreichen Entdeckung, die in einem Next.js GitHub-Issue geteilt wurde.

Lassen Sie uns Ihre Sitemap indexieren und Ihre Website wieder auf Kurs bringen. Für weitere Einblicke und zusätzliche Diskussionen können Sie auch meine Antwort auf das GitHub-Issue hier ansehen.

Das Problem: Warum kann Google die Sitemap nicht abrufen?

Der Kern des Problems scheint eine Kombination aus der Art und Weise, wie Next.js Routing und Middleware handhabt, und wie Google Search Console seine Abrufversuche zwischenspeichert, zu sein. Wenn GSC versucht, auf Ihre sitemap.xml zuzugreifen, stößt sie möglicherweise auf eine Störung – oft von der Middleware –, die dazu führt, dass die Anfrage fehlschlägt. Sobald sie fehlschlägt, speichert GSC dieses fehlgeschlagene Ergebnis für diese spezifische URL anscheinend im Cache. Selbst nachdem Sie das zugrundeliegende Problem behoben haben, reicht es möglicherweise nicht aus, dieselbe sitemap.xml-URL einfach erneut einzureichen, um einen neuen Versuch auszulösen.

So beheben Sie den Fehler “Couldn’t Fetch”

Diese Lösung stammt vom GitHub-Benutzer @segabrielcarvalho, der einen praktischen Ansatz teilte, der Caching, Routing und Middleware-Konflikte mit vier Schlüsselschritten adressiert.

Schritt 1: Erzwingen Sie einen frischen Sitemap-Abruf mit einem Trailing Slash

Dies ist der einfachste, aber wichtigste Schritt. Google Search Console scheint fehlgeschlagene Abrufversuche aggressiv zu cachen. Um sie zu zwingen, es mit einem sauberen State erneut zu versuchen, können Sie eine einfache Cache-Busting-Technik verwenden.

Anstatt https://ihre-seite.com/sitemap.xml einzureichen, fügen Sie einen Trailing Slash hinzu:

https://ihre-seite.com/sitemap.xml/

Die Einreichung dieser leicht unterschiedlichen URL umgeht den Cache von GSC und löst einen frischen Abruf aus. Dieser einfache Trick ist oft ausreichend, um die Sitemap erfolgreich lesen zu lassen, nachdem Sie die anderen Fixes implementiert haben.

Schritt 2: Servieren Sie Ihre Sitemap von einer verschachtelten Route

Anstatt Ihre sitemap.ts-Datei in das Stammverzeichnis Ihres app-Verzeichnisses zu legen, verschieben Sie sie in einen verschachtelten Ordner. Dies hilft, sie zu isolieren und sicherzustellen, dass sie ohne Konflikte korrekt bereitgestellt wird.

  1. Erstellen Sie einen neuen sitemap-Ordner innerhalb Ihres app-Verzeichnisses.
  2. Verschieben Sie Ihre sitemap.ts (oder sitemap.js)-Datei hinein.

Ihr neuer Dateipfad lautet: app/sitemap/sitemap.ts

Dies ändert die öffentliche URL Ihrer Sitemap. Die neue URL lautet:

https://ihre-seite.com/sitemap/sitemap.xml

Denken Sie daran, diese neue URL zu verwenden, wenn Sie sie bei Google Search Console einreichen (mit dem Trailing-Slash-Trick!).

Schritt 3: Schließen Sie SEO-Dateien von Ihrer Middleware aus

Middleware ist leistungsstark, aber sie kann versehentlich auch Googlebot daran hindern, auf wichtige Dateien wie Ihre Sitemap und robots.txt zuzugreifen. Um dies zu verhindern, müssen Sie Ihre middleware.ts aktualisieren, um diese Dateien explizit auszuschließen.

Die matcher-Konfiguration in Ihrer Middleware-Datei teilt Next.js mit, für welche Pfade die Middleware ausgeführt werden soll. Durch die Verwendung eines negativen Lookaheads können Sie anweisen, sie auf alle Pfade außer statischen Assets und SEO-Dateien auszuführen.

Hier ist ein Middleware-Beispiel, das nichts tut, aber die notwendigen Dateien korrekt ausschließt. Sie können dies für Ihre bestehende Middleware anpassen.

middleware.ts
import type { NextRequest } from "next/server";
import { NextResponse } from "next/server";

export default function middleware(req: NextRequest) {
  // Ihre Middleware-Logik kann hier eingefügt werden.
  // Wenn Sie keine andere Logik haben, geben Sie einfach next() zurück.
  void req;
  return NextResponse.next();
}

export const config = {
  matcher: [
    /*
     * Alle Anfragepfade abgleichen, außer denen, die beginnen mit:
     * - _next/static (statische Dateien)
     * - _next/image (Bildoptimierungsdateien)
     * - favicon.ico (Favicon-Datei)
     * - robots.txt (Robots-Datei)
     * - sitemap.xml (Sitemap-Datei)
     * - sitemap/ (verschachtelte Sitemap-Dateien)
     * - site.webmanifest (Web-Manifest-Datei)
     */
    "/((?!_next/static|_next/image|favicon\\.ico|robots\\.txt|sitemap\\.xml|sitemap/.*|site\\.webmanifest).*)",
  ],
};

Diese Konfiguration stellt sicher, dass Ihre robots.txt und beide potenziellen Sitemap-Pfade (/sitemap.xml und /sitemap/sitemap.xml) niemals von der Middleware verarbeitet werden, um potenzielle Blocks oder Weiterleitungen zu vermeiden, die Googlebot verwirren könnten.

Schritt 4: Erstellen Sie eine korrekte robots.txt-Datei

Stellen Sie sicher, dass Sie eine saubere und korrekte robots.txt-Datei in Ihrem app-Verzeichnis haben. Diese Datei sollte alle User-Agents explizit erlauben und auf Ihre neue Sitemap-URL verweisen. Wenn Sie eine robots.txt in Ihrem public-Ordner hatten, ist es am besten, diese zu entfernen, um Konflikte zu vermeiden, und sich ausschließlich auf die aus Ihrem app-Verzeichnis generierte zu verlassen.

Erstellen Sie eine Datei namens robots.ts oder robots.txt in Ihrem app-Verzeichnis mit folgendem Inhalt:

app/robots.ts
import { MetadataRoute } from 'next'

export default function robots(): MetadataRoute.Robots {
  return {
    rules: {
      userAgent: '*',
      allow: '/',
    },
    sitemap: 'https://ihre-seite.com/sitemap/sitemap.xml',
  }
}

Oder, wenn Sie eine statische Datei bevorzugen:

app/robots.txt
User-agent: *
Allow: /

Sitemap: https://ihre-seite.com/sitemap/sitemap.xml

Ersetzen Sie https://ihre-seite.com durch Ihre tatsächliche Domain. Diese Datei leitet Crawler zu Ihrem neuen Sitemap-Standort.

Wichtige Erkenntnisse

Um die Lösung zusammenzufassen:

  1. Verwenden Sie einen Trailing Slash (/) auf Ihrer Sitemap-URL bei der Einreichung bei GSC, um den Cache zu brechen.
  2. Verschieben Sie Ihre Sitemap-Datei zu einer verschachtelten Route wie app/sitemap/sitemap.ts.
  3. Aktualisieren Sie Ihre Middleware, um SEO-Dateien wie robots.txt und sitemap.xml auszuschließen.
  4. Verweisen Sie in Ihrer robots.txt auf die neue Sitemap-URL.

Außerdem ist es wichtig, sicherzustellen, dass Sie nur eine einzige Quelle für Ihre Sitemap haben. Wenn Sie eine sitemap.xml in Ihrem public-Ordner haben und gleichzeitig eine aus Ihrem app-Verzeichnis generieren, können Konflikte entstehen. Löschen Sie alte Sitemap-Dateien und behalten Sie nur eine einzige, dynamisch generierte bei.

Indem Sie diesen Schritten folgen, sollten Sie in der Lage sein, den Fehler “Couldn’t fetch sitemap” zu beheben und Ihre Next.js-Seite korrekt von Google indexieren zu lassen. Viel Erfolg

Kategorie Next.js Troubleshooting
Teilen

Verwandte Beiträge

Erhalten Sie die neuesten KI-Erkenntnisse in Ihrem Posteingang

Bleiben Sie mit den neuesten Trends, Tutorials und Brancheneinblicken auf dem Laufenden. Treten Sie der Gemeinschaft von Entwicklern bei, die unserem Newsletter vertrauen.

Nur neue Konten. Durch die Übermittlung Ihrer E-Mail akzeptieren Sie unsere Datenschutzrichtlinie