Blog Ressources À propos Rechercher Sujets
Dépannage Next.js

Correction : Erreur « Impossible de récupérer le sitemap » dans Google Search Console sur Next.js (App Router)

Mis à jour le 10 octobre 2025

Catégorie: Dépannage Next.js
Partager

Guide de dépannage de sitemap Next.js pour Google Search Console

Si vous vous arrachez les cheveux en voyant l’erreur « Impossible de récupérer le sitemap » dans Google Search Console pour votre projet Next.js, vous n’êtes pas seul. Cette erreur frustrante de sitemap dans Google Search Console peut empêcher Google d’indexer correctement votre site, ce qui nuit à votre visibilité. De nombreux développeurs utilisant le App Router de Next.js ont rencontré ce défi de dépannage de sitemap Next.js, où GSC n’arrive pas à lire le sitemap, même s’il semble parfaitement accessible dans le navigateur.

Heureusement, la communauté de développeurs a trouvé une solution fiable. Ce guide vous détaille les étapes exactes pour corriger l’erreur « Impossible de récupérer », basées sur une découverte utile partagée dans une issue GitHub de Next.js.

Remettons votre sitemap en index et remettons votre site sur les rails. Pour plus d’informations et des discussions supplémentaires, vous pouvez également consulter ma réponse sur l’issue GitHub ici.

Le problème : Pourquoi Google ne peut-il pas récupérer le sitemap ?

Le cœur du problème semble être une combinaison de la manière dont Next.js gère le routage et le middleware, et de la manière dont Google Search Console met en cache ses tentatives de récupération. Lorsque GSC essaie d’accéder à votre sitemap.xml, il peut rencontrer une interférence — souvent provenant du middleware — qui provoque l’échec de la requête. Une fois qu’elle échoue, GSC semble mettre en cache ce résultat raté pour cette URL spécifique. Même après avoir corrigé le problème sous-jacent, simplement renvoyer la même URL de sitemap.xml ne déclenche pas nécessairement une nouvelle tentative.

Comment corrifier l’erreur « Impossible de récupérer »

Cette solution provient de l’utilisateur GitHub @segabrielcarvalho, qui a partagé une approche pratique abordant la mise en cache, le routage et les conflits de middleware en quatre étapes clés.

Étape 1 : Forcer une nouvelle récupération du sitemap avec un slash final

C’est l’étape la plus simple mais la plus cruciale. Google Search Console semble mettre en cache agressivement les tentatives de récupération échouées. Pour le forcer à réessayer avec une ardoise propre, vous pouvez utiliser une simple technique de contournement de cache.

Au lieu de soumettre https://votre-site.com/sitemap.xml, ajoutez un slash final :

https://votre-site.com/sitemap.xml/

Soumettre cette URL légèrement différente contournera le cache de GSC et déclenchera une nouvelle récupération. Cette astuce simple est souvent suffisante pour faire lire le sitemap avec succès après avoir implémenté les autres corrections.

Étape 2 : Servir votre sitemap depuis une route imbriquée

Au lieu de placer votre fichier sitemap.ts à la racine de votre répertoire app, déplacez-le dans un dossier imbriqué. Cela aide à l’isoler et à garantir qu’il est servi correctement sans conflits.

  1. Créez un nouveau dossier sitemap à l’intérieur de votre répertoire app.
  2. Déplacez votre fichier sitemap.ts (ou sitemap.js) à l’intérieur.

Votre nouveau chemin de fichier sera : app/sitemap/sitemap.ts

Cela change l’URL publique de votre sitemap. La nouvelle URL sera :

https://votre-site.com/sitemap/sitemap.xml

N’oubliez pas d’utiliser cette nouvelle URL lorsque vous la soumettez à Google Search Console (avec l’astuce du slash final !).

Étape 3 : Exclure les fichiers SEO de votre middleware

Le middleware est puissant, mais il peut aussi bloquer accidentellement Googlebot d’accéder à des fichiers importants comme votre sitemap et robots.txt. Pour éviter cela, vous devez mettre à jour votre middleware.ts pour exclure explicitement ces fichiers.

La configuration matcher dans votre fichier middleware indique à Next.js sur quelles paths le middleware doit s’exécuter. En utilisant une exclusion négative (negative lookahead), vous pouvez lui indiquer de s’exécuter sur tous les chemins sauf les fichiers statiques et les fichiers SEO.

Voici un exemple de middleware qui ne fait rien mais exclut correctement les fichiers nécessaires. Vous pouvez l’adapter pour votre middleware existant.

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

export default function middleware(req: NextRequest) {
  // Votre logique middleware peut aller ici.
  // Si vous n'avez aucune autre logique, retournez simplement next().
  void req;
  return NextResponse.next();
}

export const config = {
  matcher: [
    /*
     * Fait correspondre toutes les requêtes sauf celles commençant par :
     * - _next/static (fichiers statiques)
     * - _next/image (fichiers d'optimisation d'image)
     * - favicon.ico (fichier favicon)
     * - robots.txt (fichier robots)
     * - sitemap.xml (fichier sitemap)
     * - sitemap/ (fichiers sitemap imbriqués)
     * - site.webmanifest (fichier manifeste web)
     */
    "/((?!_next/static|_next/image|favicon\\.ico|robots\\.txt|sitemap\\.xml|sitemap/.*|site\\.webmanifest).*)",
  ],
};

Cette configuration garantit que votre robots.txt et les deux chemins de sitemap potentiels (/sitemap.xml et /sitemap/sitemap.xml) ne sont jamais traités par le middleware, évitant tout blocage ou redirection potentiel qui pourrait confondre Googlebot.

Étape 4 : Créer un fichier robots.txt correct

Enfin, assurez-vous d’avoir un fichier robots.txt propre et correct dans votre répertoire app. Ce fichier doit autoriser explicitement tous les agents utilisateur et pointer vers votre nouvelle URL de sitemap. Si vous aviez un robots.txt dans votre dossier public, il est préférable de le supprimer pour éviter les conflits et compter uniquement sur celui généré depuis votre répertoire app.

Créez un fichier nommé robots.ts ou robots.txt dans votre répertoire app avec le contenu suivant :

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

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

Ou, si vous préférez un fichier statique :

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

Sitemap: https://votre-site.com/sitemap/sitemap.xml

Assurez-vous de remplacer https://votre-site.com par votre domaine réel. Ce fichier dirige les robots d’exploration vers le nouvel emplacement de votre sitemap.

Points clés à retenir

Pour résumer la correction :

  1. Utilisez un slash final (/) sur votre URL de sitemap lors de la soumission à GSC pour contourner le cache.
  2. Déplacez votre fichier sitemap vers une route imbriquée comme app/sitemap/sitemap.ts.
  3. Mettez à jour votre middleware pour exclure les fichiers SEO comme robots.txt et sitemap.xml.
  4. Pointez votre robots.txt vers la nouvelle URL du sitemap.

De plus, il est important de vous assurer que vous n’avez qu’une seule source pour votre sitemap. Si vous avez un sitemap.xml dans votre dossier public et que vous en générez également un depuis votre répertoire app, des conflits peuvent survenir. Supprimez les anciens fichiers de sitemap et fiez-vous à un seul sitemap généré dynamiquement.

En suivant ces étapes, vous devriez être en mesure de résoudre l’erreur « Impossible de récupérer le sitemap » et faire indexer correctement votre site Next.js par Google. Bon shipping

Catégorie Dépannage Next.js
Partager

Articles Associés

Obtenez les derniers insights IA livrés dans votre boîte de réception

Restez à jour avec les dernières tendances, tutoriels et perspectives de l'industrie. Rejoignez la communauté des développeurs qui font confiance à notre newsletter.

Nouveaux comptes uniquement. En envoyant votre e-mail, vous acceptez nos Politique de Confidentialité