Sitemap WordPress : où le trouver et comment le réparer
Où se trouve réellement le sitemap d’un site WordPress
Tapez /sitemap.xml sur un site WordPress récent et vous obtenez souvent un 404. Ce n'est pas que le site est dépourvu de sitemap : depuis la version 5.5, sortie en août 2020, le cœur de WordPress publie son index sur /wp-sitemap.xml. Aucune redirection n'est prévue depuis /sitemap.xml, ce qui explique une bonne part des faux diagnostics.
Dès qu'un plugin SEO entre en jeu, l'adresse change. Yoast et Rank Math prennent la main sur /sitemap_index.xml et coupent le sitemap natif via le filtre wp_sitemaps_enabled, pour éviter deux jeux de fichiers concurrents. Yoast ajoute en plus une redirection depuis /sitemap.xml, ce que le cœur ne fait pas.
Les valeurs par défaut restent loin sous le plafond du protocole sitemaps.org 0.9 : 50 000 URLs et 50 Mo non compressés par fichier. Vous n'avez donc aucune raison de toucher au découpage, sauf sur un catalogue volumineux où réduire le nombre d'URLs par fichier facilite le diagnostic dans Search Console.
Trois objets portent le même nom dans les discussions et n'ont pas la même fonction. Le sitemap XML s'adresse aux robots. Le plan du site en HTML, cette page qui liste vos rubriques, s'adresse aux visiteurs et n'est pas lu comme un sitemap par Google. Le fichier robots.txt ne contient qu'une ligne Sitemap: qui pointe vers le premier. Soumettre un plan HTML dans Search Console renvoie une erreur de format.
| Source | URL de l'index | URLs par fichier (défaut) |
|---|---|---|
| WordPress 5.5+ (natif) | /wp-sitemap.xml | 2 000 |
| Yoast SEO | /sitemap_index.xml | 1 000 |
| Rank Math | /sitemap_index.xml | 200 |
| All in One SEO | /sitemap.xml | 1 000 |
| SEOPress | /sitemaps.xml | configurable |
Ce que contient wp-sitemap.xml, et ce qu’il n’écrit pas
L'index ne contient aucune URL de page, seulement des liens vers des sous-sitemaps. Sur une installation standard vous trouverez wp-sitemap-posts-post-1.xml, wp-sitemap-posts-page-1.xml, wp-sitemap-taxonomies-category-1.xml, wp-sitemap-taxonomies-post_tag-1.xml et wp-sitemap-users-1.xml. Le suffixe numérique s'incrémente tous les 2 000 contenus, valeur par défaut du filtre wp_sitemaps_max_urls.
Les types de contenu publics y entrent automatiquement, produits WooCommerce compris. Les fichiers joints en sont exclus par défaut. Le sitemap des utilisateurs ne liste que les auteurs ayant au moins un contenu publié dans un type déclarant la prise en charge author. Sur un site à auteur unique, il expose donc un identifiant et une archive que beaucoup préfèrent retirer.
Le format généré est volontairement pauvre : une balise loc par URL, sans changefreq ni priority. Ce n'est pas une lacune, Google déclare ignorer ces deux balises. Pour lastmod, vérifiez sur votre propre installation plutôt que de vous fier à une réputation : lancez curl et regardez si la balise apparaît. Le sujet a fait l'objet de plusieurs tickets sur le cœur et le comportement dépend de votre version.
Le fichier est servi avec l'en-tête Content-Type: application/xml; charset=UTF-8 et une feuille de style XSL, /wp-sitemap.xsl, qui le rend lisible dans un navigateur. Si vous voyez du XML brut non mis en forme, c'est en général que cette feuille est bloquée par un CDN ou un pare-feu applicatif. Le sitemap, lui, va bien.
Pourquoi /wp-sitemap.xml renvoie 404
Cas typique après une mise en ligne : le site répond, les articles s'affichent, et /wp-sitemap.xml renvoie 404. Le premier endroit à regarder n'est pas le code mais Réglages > Lecture. Si la case Demander aux moteurs de recherche de ne pas indexer ce site est restée cochée depuis la recette, l'option blog_public vaut 0, WP_Sitemaps::sitemaps_enabled() renvoie false et le sitemap disparaît sans le moindre message.
Trois commandes suffisent ensuite à trancher. `curl -sI https://exemple.fr/wp-sitemap.xml | head -3` donne le code de statut et le type MIME : un 200 accompagné de text/html signale une page d'erreur déguisée. `curl -s https://exemple.fr/wp-sitemap.xml | head -20` montre si l'index liste bien des sous-sitemaps. `curl -s https://exemple.fr/wp-sitemap-posts-post-1.xml | grep -c '
- blog_public à 0 : case cochée dans Réglages > Lecture. Décochez, rechargez l'URL.
- Permaliens réglés sur Simple : l'URL réécrite n'existe pas, l'index reste accessible sur /?sitemap=index.
- Règles de réécriture périmées après une migration ou un changement de domaine : ouvrez Réglages > Permaliens et cliquez Enregistrer sans rien modifier.
- Un plugin SEO a coupé le natif : testez /sitemap_index.xml et /sitemap.xml avant de conclure à une panne.
- Un snippet oublié : cherchez wp_sitemaps_enabled et __return_false dans functions.php, les mu-plugins et les extensions de type Code Snippets.
- Une règle serveur ou un pare-feu qui filtre les requêtes .xml sans référent, fréquent sur les hébergements mutualisés avec module de protection.
Personnaliser le sitemap natif sans plugin
Tout se pilote par filtres. Le plus demandé retire le sitemap des utilisateurs, qui publie la liste des auteurs :
add_filter( 'wp_sitemaps_add_provider', function ( $provider, $name ) { return ( 'users' === $name ) ? false : $provider; }, 10, 2 );
Une règle qui évite des allers-retours dans Search Console : ce qui est en noindex n'a rien à faire dans un sitemap. Déclarer une URL puis interdire son indexation envoie deux signaux contradictoires et gonfle le rapport de pages exclues. Yoast et Rank Math appliquent cette exclusion tout seuls. Le sitemap natif, non : il ignore les réglages d'indexation posés par un plugin tiers, donc la combinaison sitemap du cœur et plugin de noindex demande une vérification manuelle.
- wp_sitemaps_enabled : coupe entièrement la génération native.
- wp_sitemaps_post_types : retire un type de contenu, par exemple des fiches internes déclarées publiques par erreur.
- wp_sitemaps_taxonomies : retire les étiquettes, souvent redondantes avec les catégories.
- wp_sitemaps_max_urls : change le seuil de 2 000 URLs par fichier.
- wp_sitemaps_posts_query_args : exclut des identifiants précis en passant post__not_in à la requête.
Le soumettre et vérifier qu’il sert à quelque chose
Dans Search Console, section Sitemaps, saisissez le chemin relatif wp-sitemap.xml puis validez. Le statut passe à Réussite, en général vite. Le cas pénible, c'est Impossible de récupérer alors que le fichier s'ouvre parfaitement dans votre navigateur. La cause habituelle est une réponse qui change selon le visiteur : cache HTML servi à la place du XML, CDN qui renvoie 403 aux robots, pare-feu qui filtre sur l'agent utilisateur.
Reproduisez la vue de Google avant d'accuser le plugin : `curl -s -A 'Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)' -o /dev/null -w '%{http_code} %{content_type}\n' https://exemple.fr/wp-sitemap.xml`. Un 200 avec application/xml disculpe WordPress et déplace l'enquête vers autre chose. Un 403 ou un text/html désigne directement la couche qui filtre.
Vérifiez aussi la ligne de découverte. WordPress ajoute Sitemap: https://exemple.fr/wp-sitemap.xml à son robots.txt virtuel, mais ce robots.txt virtuel est court-circuité dès qu'un fichier robots.txt physique existe à la racine, situation classique après une migration depuis un autre CMS. La ligne doit alors être écrite à la main.
Reste la limite qu'aucun réglage ne contourne : un sitemap est une aide à la découverte, pas une promesse d'indexation. Une URL correctement déclarée peut stagner des semaines en Détectée, actuellement non indexée. Son intérêt réel tient à deux choses : faire remonter des contenus qu'aucun lien interne ne couvre, et fournir une date de modification fiable. Si votre sitemap annonce une modification à chaque purge de cache, cette date ne vaut plus rien.
Depuis WordPress 5.5, chaque site publie son index de sitemaps sur /wp-sitemap.xml, et non sur /sitemap.xml : c'est la première cause des 404 constatés. Dès qu'un plugin SEO comme Yoast ou Rank Math est actif, l'adresse bascule vers /sitemap_index.xml et le sitemap natif est désactivé.
Questions fréquentes
Où est le sitemap de mon site WordPress ?
Testez /wp-sitemap.xml en premier, c'est l'index natif depuis WordPress 5.5. Si vous obtenez un 404, essayez /sitemap_index.xml (Yoast, Rank Math) puis /sitemap.xml (All in One SEO). La ligne Sitemap: de votre robots.txt donne aussi la réponse quand elle est présente.
Faut-il désactiver le sitemap natif quand on utilise Yoast ou Rank Math ?
Non, ces plugins le font eux-mêmes en filtrant wp_sitemaps_enabled. Si /wp-sitemap.xml répond encore alors qu'un plugin SEO est actif, vous avez deux sources concurrentes : gardez celle que vous soumettez à Search Console et coupez l'autre.
Mon sitemap s’affiche en code brut, sans mise en forme. Est-il cassé ?
Le plus souvent non. WordPress applique une feuille de style XSL (/wp-sitemap.xsl) pour l'affichage humain. Si un CDN, un pare-feu ou une extension de sécurité la bloque, vous voyez le XML nu. Les robots, eux, lisent le XML et se moquent de la feuille de style.
Combien d’URLs un sitemap peut-il contenir ?
Le protocole sitemaps.org plafonne à 50 000 URLs et 50 Mo non compressés par fichier. WordPress découpe bien avant, à 2 000 entrées par sous-sitemap, Yoast à 1 000 et Rank Math à 200. Au-delà, l'index renvoie simplement vers des fichiers supplémentaires numérotés.
Un sitemap améliore-t-il le positionnement ?
Il ne pèse pas sur le classement. Il accélère la découverte d'URLs mal maillées et signale les mises à jour via lastmod. Une page déclarée dans un sitemap peut rester longtemps non indexée si Google juge son contenu insuffisant.
Testez vos connaissances
Quelle est l'URL de l'index de sitemaps généré par WordPress lui-même ?
Score : 0 sur 3