x-robots-tag-vs-robots-meta-tag-2026.html
< BACK

X-Robots-Tag vs robots meta tag : quand chacun dit à Google de sauter une page

Deux façons de dire à Google de ne pas indexer une page : la balise meta robots en HTML, ou la X-Robots-Tag dans l'en-tête de réponse HTTP. Elles font le même travail. Elles ne sont pas interchangeables. Le choix du bon outil dépend du type de fichier (HTML vs PDF vs image), de l'endroit où vous pouvez faire les modifications (template vs configuration du serveur), et de si vous en avez besoin à grande échelle (une page vs dix mille).

Les deux mécanismes en une phrase chacun

robots meta tag : <meta name="robots" content="noindex, nofollow"> dans le <head> d'un document HTML. Fonctionne uniquement sur les pages HTML car il n'existe pas d'équivalent dans les métadonnées PDF / image / JSON. Facile à ajouter via le template de la page.

X-Robots-Tag : X-Robots-Tag: noindex, nofollow comme en-tête de réponse HTTP. Fonctionne sur n'importe quel type de ressource que le serveur retourne — HTML, PDF, image, vidéo, JSON, n'importe quoi. Configuré sur le serveur (Apache, Nginx, en-têtes edge de Vercel, Cloudflare Workers) ou via l'API de réponse du framework.

Quand robots meta est le bon choix

  • Exclusion d'une seule page : une page spécifique que vous voulez mettre en noindex. Ajoutez la balise meta au template de cette page, déployez le changement.
  • Pages contrôlées par modèle : quand la décision noindex est prise par type de page (par exemple, toutes les pages /thank-you/ doivent être en noindex). Ajoutez la balise meta à l'intérieur du modèle de mise en page que ces pages utilisent.
  • Décisions dynamiques : quand noindex dépend de données à l'exécution (par exemple, noindex les pages avec moins de 200 mots). La balise meta est rendue conditionnellement dans le modèle.
  • Quand vous n'avez pas accès à la configuration serveur : hébergement mutualisé, CMS verrouillé, déploiement d'agence où vous pouvez éditer les modèles mais pas htaccess. La balise meta est votre seule option.

Quand X-Robots-Tag est le bon choix

  • Ressources non-HTML : PDFs, images, points de terminaison JSON, sitemaps. Vous ne pouvez pas ajouter une balise meta à un PDF. X-Robots-Tag dans la réponse HTTP est la seule façon.
  • Exclusion basée sur des modèles : « noindex tout sous /admin/* » ou « noindex chaque fichier .pdf ». Configurez une fois sur le serveur, s'applique à chaque URL correspondante pour toujours. Beaucoup plus propre que d'éditer 200 modèles.
  • Exclusion à grande échelle : 10 000 URLs générées dynamiquement qui ne doivent pas être indexées. Un seul bloc de localisation Nginx vaut mieux qu'une conditionnelle au niveau du modèle.
  • Quand vous voulez une défense en profondeur : combinez X-Robots-Tag au serveur avec robots meta dans le modèle. L'une ou l'autre couche détecte le noindex ; les deux couches signifient qu'un bug de modèle ne peut pas réindexer accidentellement la page.

Ce que les deux peuvent définir

Les deux mécanismes acceptent le même ensemble de directives. Les plus courants : noindex (ne pas indexer), nofollow (ne pas suivre les liens de cette page), none (= noindex, nofollow), noarchive (ne pas afficher la version en cache), nosnippet (ne pas afficher l'extrait dans les SERP), max-snippet:N (limiter la longueur de l'extrait), max-image-preview:standard|large|none (contrôler les aperçus d'images dans les Overviews d'IA — pertinent pour le travail GEO 2026), max-video-preview:N (limiter la longueur de l'aperçu vidéo), unavailable_after:date (noindex automatique après une date).

Google lit les mêmes directives indépendamment du mécanisme qui les livre. Le choix du mécanisme concerne l'échelle et le type de ressource, non le support des directives.

Comment définir X-Robots-Tag sur les plateformes courantes

Vercel (vercel.json)

Utilisez un bloc [[headers]] avec un motif source et une entrée values pour X-Robots-Tag. Exemple : [[headers]] source = "/admin/(.*)" [[headers.values]] X-Robots-Tag = "noindex, nofollow". S'applique à chaque URL correspondant au motif.

Netlify (netlify.toml)

Bloc [[headers]] avec un chemin glob for et values.X-Robots-Tag défini. Exemple : [[headers]] for = "/admin/*" [headers.values] X-Robots-Tag = "noindex, nofollow".

Apache (.htaccess)

<FilesMatch "\.pdf$"> Header set X-Robots-Tag "noindex, nofollow" </FilesMatch> pour la correspondance de motif de fichier. Ou utilisez <Location /admin> Header set X-Robots-Tag "noindex, nofollow" </Location> pour la correspondance de chemin.

Nginx

location ~ /admin/ { add_header X-Robots-Tag "noindex, nofollow"; } à l'intérieur du bloc server. Le location ~ correspond par regex ; utilisez location ^~ pour une correspondance par préfixe uniquement.

Cloudflare Workers / Edge

Modifiez les en-têtes de réponse dans le script worker : response.headers.set('X-Robots-Tag', 'noindex, nofollow'). Utile pour les sites où le serveur d'origine ne peut pas facilement émettre l'en-tête.

Vérifier que l'en-tête est défini

curl -I https://example.com/page retourne tous les en-têtes de réponse, y compris X-Robots-Tag. Cherchez la ligne X-Robots-Tag dans la sortie. S'il manque, l'en-tête n'est pas défini.

Pour la vérification dans Search Console : l'outil Inspection des URL affiche les directives que Google a relevées à la fois dans la balise meta et dans l'en-tête HTTP. Si l'une des deux couches définit noindex, Google n'indexe rien. Cela vaut le coup de vérifier les deux couches car un CDN mal configuré peut supprimer les en-têtes en silence.

Le modèle de défense en profondeur

La configuration de production la plus solide utilise les deux. X-Robots-Tag au niveau du serveur pour le motif de chemin (par ex. /admin/*) plus meta robots au niveau du template dans le <head> de la page pour les mêmes pages. Deux couches signifient qu'un bug de template ou une mauvaise configuration CDN ne peut pas accidentellement réindexer des pages qui devraient être privées.

Voici comment la section admin de ce site est configurée : vercel.json définit X-Robots-Tag: noindex, nofollow sur /admin/*, ET le template AdminLayout émet <meta name="robots" content="noindex, nofollow"> dans le head. Double protection.

Erreurs courantes

  • Ajouter noindex à une page déjà bloquée par robots.txt. Disallow dans robots.txt empêche Googlebot de récupérer la page du tout, donc il ne voit jamais la directive noindex. La page peut finir indexée sans extrait parce que Google a vu l'URL ailleurs mais ne peut pas la récupérer. Supprimez la règle Disallow pour que le bot puisse récupérer + voir le noindex.
  • Définir noindex via une balise meta en HTML rendu par JavaScript. Certains bots exécutent JS, d'autres non. La solution sûre est le rendu côté serveur de la balise meta noindex, OU un X-Robots-Tag dans l'en-tête HTTP qui ne nécessite pas l'exécution de JS.
  • Définir noindex sur une page qui a des backlinks. Google respectera noindex mais l'équité de lien de ces backlinks est perdue. Mieux vaut faire une redirection 301 de la page vers une URL liée qui absorbe l'équité.
  • Oublier que X-Robots-Tag est par-réponse, non par-serveur. Les hits du cache CDN strippent parfois les en-têtes personnalisés ; vérifiez avec curl après le déploiement.

Le résumé

balise robots meta : par-page, dans le HTML, à modifier au niveau du template. X-Robots-Tag : par-réponse, dans l'en-tête HTTP, à modifier au niveau du serveur. L'un ou l'autre fonctionne pour le HTML ; seul X-Robots-Tag fonctionne pour le non-HTML. Utilisez les deux quand noindex est important.

Lecture adjacente : 410 vs 404 couvre le cas de la retraite (URLs disparaissant) ; 301 vs 302 vs 307 vs 308 couvre le cas de la redirection (URLs se déplaçant). Avec noindex, ce sont les trois outils principaux pour dire à Google quoi faire avec une URL.

< BACK