X-Robots-Tag : guide complet

L’en-tête HTTP X-Robots-Tag transmet les mêmes directives que la balise meta robots pour appliquer noindex aux PDF, images et vidéos. Configurations Apache, Nginx et Cloudflare, puis vérification avec curl.

Première publication : 23 juin 2026 · Dernière mise à jour : 21 août 2026 · Advanced
Langues
1 indice probant sur cette page

Le X-Robots-Tag est l’équivalent par en-tête HTTP de la balise meta robots : mêmes directives pour Google, mais une transmission adaptée aux fichiers sans HTML, notamment PDF, images et vidéos. Configurez-le côté serveur ou CDN, laissez la ressource explorable afin que Google lise noindex, vérifiez l’URL publique avec curl sur HEAD et GET, et surveillez les écarts entre CDN et origine.

TL;DR — Le X-Robots-Tag transmet par en-tête HTTP le même vocabulaire de directives que la balise meta robots : “Any rule that can be used in a robots meta tag can also be specified as an X-Robots-Tag.” (traduction) « Toute règle utilisable dans une balise meta robots peut aussi être définie sous forme de X-Robots-Tag. » Il existe surtout parce que les ressources non HTML (PDF, images, vidéos) n’ont pas de <head> : l’en-tête est donc la méthode prise en charge pour leur appliquer noindex. Configurez-le côté serveur (Apache <FilesMatch>, Nginx add_header, règle de transformation ou fonction Cloudflare) afin qu’une règle couvre toute une catégorie de fichier. Vous pouvez cibler un robot avec X-Robots-Tag: googlebot: noindex ; sans user-agent, la règle s’applique à tous. Réserve essentielle, commune à la balise meta : le fichier doit rester explorable. Un blocage robots.txt masque l’en-tête ; le noindex n’est alors “not found” (traduction) « pas trouvé » “and… therefore ignored.” (traduction) « et… donc ignoré ». Vérifiez avec curl -I et surveillez les écarts entre CDN et origine.

Evidence for this claim Google supports robots directives in the X-Robots-Tag HTTP response header, including for non-HTML resources such as PDFs. Scope: Google crawling and indexing controls delivered by HTTP header. Confidence: high · Verified: Google Search Central: X-Robots-Tag Evidence for this claim Google must be allowed to crawl a resource to discover and apply its X-Robots-Tag noindex rule. Scope: A robots.txt block can prevent Google from seeing the response header. Confidence: high · Verified: Google Search Central: Combining crawling and indexing rules

Ce qu’est réellement le X-Robots-Tag

Le X-Robots-Tag est la version en-tête de réponse HTTP de la balise robots <meta>. C’est tout le concept. Google indique explicitement que leur vocabulaire est interchangeable : “The X-Robots-Tag can be used as an element of the HTTP header response for a given URL. Any rule that can be used in a robots meta tag can also be specified as an X-Robots-Tag.” (traduction) « Le X-Robots-Tag peut être utilisé comme élément de la réponse d’en-tête HTTP d’une URL donnée. Toute règle utilisable dans une balise meta robots peut aussi être définie sous forme de X-Robots-Tag. » Une réponse qui le contient ressemble à ceci :

Evidence for this claim For Google, every robots-meta rule that Google supports can also be supplied in the `X-Robots-Tag` response header; this is a Google contract, not proof of identical vocabulary across all crawlers. Scope: production HTML and HTTP responses Confidence: high · Verified: Robots meta tag, data-nosnippet, and X-Robots-Tag specifications
HTTP/1.1 200 OK
Date: Tue, 25 May 2010 21:42:43 GMT
(…)
X-Robots-Tag: noindex
(…)

Si vous comprenez déjà la balise meta robots, vous connaissez donc les directives : noindex, nofollow, nosnippet et les autres se comportent de la même manière pour Google. Seul le mécanisme de transmission change : un en-tête plutôt que du HTML.

Cette équivalence constitue un engagement documenté par Google, et non un standard universel du Web : le X-Robots-Tag est un en-tête de fait, sans spécification IETF. Google le précise dans la même documentation : “It is possible that these rules may not be treated the same by all other search engines.” (traduction) « Il est possible que ces règles ne soient pas traitées de la même manière par tous les autres moteurs de recherche. » Voir le passage dans la documentation Google. Considérez donc l’identité avec les directives meta comme établie pour Google — et largement vraie pour le socle de Bing décrit plus bas — mais pas comme une garantie pour chaque robot, notamment les robots d’IA susceptibles de lire cet en-tête.

Pourquoi il existe : les fichiers non HTML

Le cas d’usage déterminant concerne les fichiers qui n’ont pas de <head> HTML où placer une balise meta. Google l’explique directement : “To block indexing of non-HTML resources, such as PDF files, video files, or image files, use the X-Robots-Tag response header instead.” (traduction) « Pour bloquer l’indexation de ressources non HTML, comme des fichiers PDF, vidéo ou image, utilisez plutôt l’en-tête de réponse X-Robots-Tag. » Voilà l’essentiel : un PDF, une image ou une vidéo ne peut pas porter de balise meta robots ; l’en-tête est donc la méthode prise en charge pour leur appliquer noindex.

Deuxième raison, plus discrète : la règle est définie côté serveur. Une seule configuration peut donc appliquer une directive à toute une catégorie de fichiers — chaque .pdf du site — voire à l’ensemble du site, sans modifier chaque ressource. Cette puissance est aussi, comme nous le verrons, la source des erreurs les plus dangereuses.

Exemple pratique — appliquer noindex à un seul PDF : supposons que https://example.com/whitepapers/old-report.pdf apparaisse dans les résultats et que vous vouliez l’en retirer. Deux conditions doivent être réunies : (1) la ressource doit rester explorable, sans Disallow la visant dans robots.txt, et (2) la réponse du serveur pour cette URL exacte doit contenir X-Robots-Tag: noindex. Configurez la règle avec l’un des exemples Apache, Nginx ou Cloudflare ci-dessous, confirmez avec curl -I que la réponse publique renvoie bien l’en-tête, puis attendez que Google réexplore l’URL. Si l’une des conditions manque, le PDF reste indexé : sans exploration Google ne lit pas l’en-tête ; sans en-tête, rien ne lui demande de retirer le fichier.

Ne transformez pas « non HTML » en « mauvais type de fichier ». Google publie une longue liste de types de fichiers indexables, dont PDF, formats bureautiques courants, texte, XML et plusieurs formats de code source. Un robot doit conserver trois observations distinctes : l’extension de l’URL, le Content-Type déclaré et les octets réellement renvoyés. Une divergence signale un problème de diffusion ; un document légitime et pris en charge n’est pas un échec de page HTML, et les contrôles propres au HTML doivent être indiqués comme non applicables. Utilisez X-Robots-Tag ou un en-tête HTTP canonique Link lorsque ces contrôles sont nécessaires pour une ressource non HTML.

Les limites de taille doivent elles aussi préciser le moteur et la base de calcul. La mise à jour de mars 2026 sur les robots Google documente une limite de 2 MB par URL pour Googlebot (Search), de 64 MB pour les PDF et de 15 MB par défaut pour les clients de robot Google non précisés. Il s’agit de limites de ressources en MB décimaux, qui ne sont pas interchangeables avec le plafond de sécurité d’un outil sur un corps décodé en MiB. Consultez les limites actuelles des robots Google avant de transformer une limite produit en diagnostic SEO.

Balise meta ou X-Robots-Tag : lequel utiliser ?

La décision devient simple dès qu’on la rapporte au <head> :

  • Page HTML dont vous maîtrisez le balisage → utilisez la balise meta robots : elle est plus facile à définir, à lire et à gérer page par page.
  • Fichier non HTML (PDF, image, vidéo ou flux) → utilisez l’en-tête X-Robots-Tag. Il n’existe pas d’autre possibilité, car ces fichiers n’ont pas de <head>.
  • Contrôle côté serveur ou à l’échelle du site préférable, ou HTML de chaque page difficile à modifier (CDN, couche applicative) → l’en-tête est plus pratique, même pour du HTML.

Ils ne sont pas concurrents et aucun n’est « plus puissant » : mêmes directives, portée différente.

Les directives disponibles

Le X-Robots-Tag accepte le même vocabulaire que la balise meta. Voici l’ensemble pris en charge :

  • noindex — ne pas indexer cette ressource.
  • nofollow — ne pas suivre ses liens.
  • none — raccourci pour noindex, nofollow.
  • all — aucune restriction (valeur par défaut).
  • nosnippet — aucun extrait textuel ni aperçu vidéo dans les résultats (équivalent au niveau de la page de data-nosnippet, qui limite la règle à une partie de la page).
  • max-snippet: [number] — limite la longueur de l’extrait.
  • max-image-preview: [none | standard | large] — limite la taille de l’aperçu d’image.
  • max-video-preview: [number] — limite en secondes la durée de l’aperçu vidéo.
  • noarchive — aucun lien en cache.
  • noimageindex — ne pas indexer les images de la page.
  • notranslate — ne pas proposer de traduction dans les résultats.
  • indexifembedded — ne pas indexer cette ressource seule, mais autoriser son indexation lorsqu’elle est intégrée, par exemple dans une iframe. À associer à noindex.
  • unavailable_after: [date/time] — retirer l’URL des résultats après une date. Celle-ci doit suivre un format largement adopté (RFC 822, RFC 850 ou ISO 8601), par exemple :
X-Robots-Tag: unavailable_after: 25 Jun 2010 15:00:00 PST

Présenter ce tableau une seule fois est intentionnel : il s’agit de la même liste que pour la balise meta, ce qui est la manière la plus claire de comprendre leur relation.

Cibler un robot particulier

Vous pouvez préfixer la directive par un jeton user-agent. Google précise que l’en-tête “may optionally specify a user agent before the rules,” (traduction) « peut facultativement indiquer un user-agent avant les règles », et que “Rules specified without a user agent are valid for all crawlers. The HTTP header, the user agent name, and the specified values are not case sensitive.” (traduction) « Les règles sans user-agent sont valables pour tous les robots. Le nom de l’en-tête HTTP, celui du user-agent et les valeurs indiquées ne sont pas sensibles à la casse. » La syntaxe suivante est donc valide pour appliquer noindex uniquement à Google :

Evidence for this claim Google's header syntax permits an optional crawler name before a rule list, and Google treats header names, crawler names and directive values as case-insensitive. Scope: production HTML and HTTP responses Confidence: high · Verified: Robots meta tag, data-nosnippet, and X-Robots-Tag specifications
X-Robots-Tag: googlebot: noindex

Vous pouvez aussi cumuler plusieurs lignes pour différents robots. Précision sur l’attribution : l’exemple documenté par Google emploie X-Robots-Tag: googlebot: nofollow avec X-Robots-Tag: otherbot: noindex, nofollow. La forme googlebot: noindex est donc correcte et prise en charge, mais ce n’est pas la ligne citée mot pour mot dans l’exemple de Google.

Règles multiples et directives contradictoires

Une réponse peut contenir plusieurs directives. Google le documente clairement : “Multiple rules may be combined in a comma-separated list or in separate meta tags. These rules are case-insensitive.” (traduction) « Plusieurs règles peuvent être combinées dans une liste séparée par des virgules ou dans des balises meta distinctes. Ces règles ne sont pas sensibles à la casse. » Il en va de même pour l’en-tête : envoyez X-Robots-Tag: noindex, nofollow sur une ligne, ou répétez le champ (X-Robots-Tag: noindex sur une ligne puis X-Robots-Tag: nofollow sur une autre). Les deux formes sont valides ; les exemples de configuration ci-dessous utilisent la liste séparée par des virgules.

Lorsque deux règles se contredisent, Google retient la restriction la plus forte : “In the case of conflicting robots rules, the more restrictive rule applies. For example, if a page has both max-snippet:50 and nosnippet rules, the nosnippet rule will apply.” (traduction) « En cas de règles robots contradictoires, la règle la plus restrictive s’applique. Par exemple, si une page contient à la fois max-snippet:50 et nosnippet, la règle nosnippet s’applique. » C’est le comportement documenté par Google. La réserve selon laquelle les autres moteurs peuvent traiter les règles différemment vaut aussi pour la résolution des conflits : ne supposez pas que chaque robot choisira de la même façon la règle la plus stricte.

Evidence for this claim Google accepts multiple X-Robots-Tag rules as a comma-separated list or repeated header fields, and resolves conflicting rules by applying the more restrictive one; this behavior is documented for Google specifically, not guaranteed across all crawlers. Scope: Google's handling of multiple/conflicting robots meta and X-Robots-Tag directives. Confidence: high · Verified: Google Search Central: repeated and comma-separated X-Robots-Tag rules Supports: Multiple X-Robots-Tag rules may use repeated headers or a comma-separated list. Google Search Central: conflicting robots rules Supports: Google applies the more restrictive rule when robots rules conflict. Google Search Central: cross-engine treatment may differ Supports: Other search engines may treat these rules differently.

Comment le configurer côté serveur

Voici des modèles éprouvés que j’utiliserais, mais considérez chaque extrait comme un exemple propre à un environnement, et non comme une recette universelle : héritage, correspondance des routes, redirections, codes d’état de réponse et couches CDN ou applicatives peuvent modifier ce que reçoit réellement le robot. Vérifiez l’en-tête transmis par votre propre infrastructure avant la mise en ligne, pas seulement le fichier de configuration. Les configurations prêtes à copier figurent dans l’onglet Scripts pour Apache (<FilesMatch> et mod_headers), Nginx (location

  • add_header) et Cloudflare (règle de transformation ou Worker). En bref, une règle associée à l’extension définit X-Robots-Tag: noindex pour chaque fichier de ce type. Pour cibler un robot, placez le jeton user-agent dans la valeur de l’en-tête (Header set X-Robots-Tag "googlebot: noindex"), et non dans un mécanisme séparé.

L’erreur no 1 : ne bloquez pas le fichier dans robots.txt

C’est le point central, alors insistons. Pour retirer un PDF, on le bloque dans robots.txt tout en définissant X-Robots-Tag: noindex. Ces deux mesures s’annulent : Google doit explorer le fichier pour lire l’en-tête, et le blocage robots.txt empêche cette exploration.

Selon Google : “robots meta tags and X-Robots-Tag HTTP headers are discovered when a URL is crawled.” (traduction) « Les balises meta robots et les en-têtes HTTP X-Robots-Tag sont découverts lors de l’exploration d’une URL. » “If a page is disallowed from crawling through the robots.txt file, then any information about indexing or serving rules will not be found and will therefore be ignored.” (traduction) « Si robots.txt interdit l’exploration d’une page, les règles d’indexation ou de diffusion ne seront pas trouvées et seront donc ignorées. » Conséquence : “If indexing or serving rules must be followed, the URLs containing those rules cannot be disallowed from crawling.” (traduction) « Si des règles d’indexation ou de diffusion doivent être respectées, l’exploration des URL qui les contiennent ne peut pas être interdite. »

Pour noindex, Google reformule ainsi : “For the noindex rule to be effective, the page or resource must not be blocked by a robots.txt file, and it has to be otherwise accessible to the crawler. If the page is blocked by a robots.txt file or the crawler can’t access the page, the crawler will never see the noindex rule, and the page can still appear in search results.” (traduction) « Pour que la règle noindex soit efficace, la page ou ressource ne doit pas être bloquée par robots.txt et doit rester accessible au robot. Si elle est bloquée ou inaccessible, le robot ne verra jamais la règle noindex et la page pourra encore apparaître dans les résultats. » C’est la même distinction entre exploration et indexation que pour robots.txt et la balise meta : robots.txt contrôle l’exploration, X-Robots-Tag l’indexation, et un blocage d’exploration masque la règle d’indexation. Pour désindexer un PDF : autorisez l’exploration, servez X-Robots-Tag: noindex et attendez la nouvelle exploration.

(À l’inverse, un Disallow dans robots.txt ne désindexe pas non plus un fichier : un PDF bloqué peut encore être indexé si d’autres pages pointent vers lui, mais sans extrait. Blocage et noindex répondent à deux problèmes distincts.)

Vérifier avec curl

Ne supposez pas qu’une configuration « devrait » fonctionner : vérifiez l’en-tête public. curl -I — ou curl -sI … | grep -i x-robots-tag — affiche les en-têtes de réponse sans télécharger le corps :

curl -sI https://example.com/file.pdf | grep -i x-robots-tag

Vous pouvez aussi simuler la vue du robot avec curl -A "Googlebot" -sI …. La plupart des guides recommandent une extension de navigateur ou Screaming Frog ; curl est plus rapide et automatisable. Les commandes complètes figurent dans l’onglet Scripts.

Réserve concernant -I : cette option envoie une requête HEAD. Une règle de serveur ou de CDN limitée à GET n’apparaîtra pas dans une réponse HEAD. Utilisez donc curl -I comme premier contrôle rapide, puis confirmez l’en-tête sur une vraie requête curl GET (curl -sD - -o /dev/null https://example.com/file.pdf | grep -i x-robots-tag). Vérifiez aussi après les redirections et sur l’URL publique derrière le CDN, pas seulement à l’origine.

Surveiller les écarts entre CDN et origine

Puisque l’en-tête est défini côté serveur ou CDN, la valeur reçue par Googlebot peut différer de celle émise par l’origine : une règle de périphérie peut ajouter, retirer ou mettre en cache un en-tête. Le cas réel est le message “Noindex detected in X-Robots-Tag” (traduction) « Noindex détecté dans X-Robots-Tag » de Search Console : un CDN ou une configuration edge qui sert X-Robots-Tag: noindex, même brièvement ou par erreur, est enregistré par Google comme signal noindex et peut désindexer des pages qui ne devaient pas l’être. Vérifiez toujours avec curl -I l’URL publique derrière le CDN, pas seulement l’origine, et traitez les règles edge avec la même prudence que la configuration d’origine.

Autres moteurs

Bing prend en charge l’en-tête X-Robots-Tag et globalement le même socle de directives : noindex, nofollow, noarchive/nocache (Bing emploie nocache comme synonyme de noarchive), nosnippet et les limites d’aperçu. Si vous avez besoin de la liste exacte de Bing, consultez sa page d’aide en direct : sa documentation est rendue en JavaScript et mérite une vérification visuelle avant de compter sur une directive précise.

Sa place dans l’ensemble

Le X-Robots-Tag est la moitié non HTML du contrôle de l’indexation sur la page : la balise meta robots pour les pages, cet en-tête pour le reste. Il reprend le vocabulaire noindex, nosnippet, max-snippet et max-image-preview, tout en exigeant que l’exploration soit autorisée, ce qui le relie directement à robots.txt et à l’indexation en général. Si vous arrivez par le versant exploration, retenez cette réserve ; si vous connaissez déjà la balise meta, retenez que les mêmes directives atteignent les PDF et médias grâce à l’en-tête.

Add an expert note

Pin an expert quote

New person? Create their unclaimed profile at /admin/experts/ → Pin a quote first.