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.
Langues
1 indice probant sur cette page
- Outil en ligne associéHTTP Header Checker
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 permet d’indiquer aux moteurs de recherche « n’indexez pas ce fichier ». Toutefois, au lieu d’insérer une balise dans le HTML de la page, cette instruction est envoyée dans la réponse du serveur. C’est important, car certains fichiers (PDF, images, vidéos) n’ont pas de HTML où placer une balise. Pour exclure un PDF de Google, le X-Robots-Tag est donc la solution.
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
De quoi s’agit-il ?
Vous connaissez probablement la balise meta robots : un petit extrait dans le HTML d’une page qui indique <meta name="robots" content="noindex" /> afin d’exclure cette page des résultats. Le X-Robots-Tag remplit exactement la même fonction, mais il est transmis dans l’en-tête de réponse HTTP envoyé par le serveur, et non dans le HTML de la page.
Pourquoi en avoir besoin ? Parce que certains éléments de votre site ne sont pas des pages HTML. Un PDF ne comporte pas de section <head>, pas plus qu’une image ou une vidéo. Il n’existe donc aucun emplacement pour une balise meta. Pour exclure un PDF de l’index Google, utilisez l’en-tête X-Robots-Tag.
Quand l’utiliser
- Un PDF (tarif, ancien livre blanc ou téléchargement protégé qui a fuité) apparaît dans les résultats et vous souhaitez le retirer.
- Vous voulez appliquer noindex à toute une catégorie de fichiers — tous les PDF du site — avec une seule règle, sans les modifier un par un.
- Vous gérez des images ou des vidéos que vous ne voulez pas voir indexées séparément.
Pour une page HTML classique, utilisez simplement la balise meta : c’est plus facile. Le X-Robots-Tag sert aux cas que cette balise ne peut pas atteindre.
L’erreur que tout le monde commet
Voici le piège récurrent. Pour faire disparaître un PDF, on le bloque dans robots.txt et on ajoute un X-Robots-Tag noindex. Deux précautions valent mieux qu’une, n’est-ce pas ?
Non. Le blocage dans robots.txt empêche Google de récupérer le fichier : Google ne voit donc jamais l’en-tête noindex soigneusement configuré. La directive est ignorée et le PDF peut rester dans les résultats. Pour appliquer noindex à un fichier, vous devez laisser Google l’explorer afin qu’il lise l’en-tête. Ne le bloquez pas.
Comment le vérifier
Vous, ou un développeur, pouvez confirmer la présence de l’en-tête avec une seule commande : curl -I https://example.com/file.pdf. Elle affiche les en-têtes de réponse sans télécharger le fichier ; recherchez la ligne X-Robots-Tag. Une version prête à copier figure dans l’onglet Scripts.
Vous cherchez les configurations serveur pour Apache, Nginx et Cloudflare, ainsi que la méthode pour cibler uniquement Googlebot et vérifier l’en-tête en production ? Passez à l’onglet Avancé.
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
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 rulesmetatag can also be specified as anX-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>, Nginxadd_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 avecX-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 aveccurl -Iet surveillez les écarts entre CDN et origine.
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 :
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 pournoindex, 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 dedata-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 PSTPré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 specificationsX-Robots-Tag: googlebot: noindexVous 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.
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éfinitX-Robots-Tag: noindexpour 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-tagVous 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.
Résumé par l’IA
Synthèse de la version Avancé :
- Définition : le X-Robots-Tag est la version en-tête de réponse HTTP de la balise meta robots : “Any rule that can be used in a robots
metatag can also be specified as anX-Robots-Tag.” (traduction) « Une règle admise dans la balise meta robots peut également être envoyée comme X-Robots-Tag. » Mêmes directives, transmission différente, spécifiquement pour Google ; Google prévient que d’autres moteurs peuvent les traiter autrement. - Raison d’être : les fichiers 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 : “use theX-Robots-Tagresponse header instead.” (traduction) « utilisez plutôt l’en-tête de réponse X-Robots-Tag ». La ressource doit rester explorable. - Directives : tout le vocabulaire de la balise meta —
noindex,nofollow,none,all,nosnippet,max-snippet,max-image-preview,max-video-preview,noarchive,noimageindex,notranslate,indexifembedded,unavailable_after. - Règles multiples : combinez les directives dans une liste séparée par des virgules ou répétez les lignes d’en-tête ; Google applique la règle la plus restrictive en cas de conflit.
- Configuration côté serveur : Apache
<FilesMatch>etmod_headers, Nginxadd_header, ou règle de transformation/Worker Cloudflare. Chaque extrait dépend de l’environnement : héritage, redirections, statuts et couches CDN/applicatives peuvent modifier la réponse. Ainsi, Nginx cesse d’hériter duadd_headerparent dès qu’un bloclocationenfant définit son propre en-tête. - Par robot :
X-Robots-Tag: googlebot: noindex; sans jeton user-agent, tous les robots sont visés ; noms et valeurs ne sont pas sensibles à la casse. - Erreur no 1 : bloquer le fichier dans robots.txt masque l’en-tête ; le noindex n’est alors “not found and… therefore ignored.” (traduction) « pas trouvé et… donc ignoré ». Pour désindexer : autorisez l’exploration et servez
noindex. - Vérification : testez l’URL publique avec
curl -I, puis confirmez avec une vraie requête GET, car-IenvoieHEADet peut manquer les règles propres à GET. Simulez Googlebot avec-A "Googlebot"et surveillez les écarts CDN-origine, dont l’erreur GSC “Noindex detected in X-Robots-Tag” (traduction) « Noindex détecté dans X-Robots-Tag ». - Bing : le prend également en charge, avec
nocache≈noarchive; vérifiez la liste en direct.
Documentation officielle
Documentation de première main sur le X-Robots-Tag et les règles d’indexation qu’il transmet.
- Spécifications des balises meta robots, de data-nosnippet et de X-Robots-Tag — spécification de référence : section X-Robots-Tag, tableau complet des directives, ciblage par robot et obligation d’autoriser l’exploration.
- Bloquer l’indexation avec noindex — les deux méthodes pour mettre en œuvre
noindex(balise meta ou en-tête HTTP) et la dépendance à l’explorabilité. - Présentation de robots.txt — fonction de robots.txt (contrôle de l’exploration, non de l’indexation), soit l’autre moitié de l’explication du blocage qui masque l’en-tête.
Bing / Microsoft
- Balises et attributs meta robots pris en charge par Bing — directives prises en charge, dont
nocache(≈noarchive). La page est rendue en JavaScript : vérifiez la liste exacte dans un navigateur. (URL mise à jour le 18 juillet 2026 : Bing redirige désormais l’ancien slug ici par une 301.)
Citations des sources
Déclarations officielles tirées de la documentation Google. Chaque lien profond mène au passage cité sur la page source.
Google — définition du X-Robots-Tag
- “The
X-Robots-Tagcan be used as an element of the HTTP header response for a given URL. Any rule that can be used in a robotsmetatag can also be specified as anX-Robots-Tag.” (traduction) « Pour une URL donnée, le X-Robots-Tag peut figurer dans l’en-tête de réponse HTTP. Toute directive admise dans une balise meta robots peut également être exprimée par un X-Robots-Tag. » — Documentation Google Search Central. Accéder à la citation
Google — raison d’être : les fichiers non HTML
- “To block indexing of non-HTML resources, such as PDF files, video files, or image files, use the
X-Robots-Tagresponse 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. » Accéder à la citation
Google — ciblage par robot
- “may optionally specify a user agent before the rules” (traduction) « permet, de manière facultative, de placer un user-agent avant les règles » Accéder à la citation
- “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) « Une règle dépourvue de user-agent vaut pour l’ensemble des robots. La casse n’a d’importance ni pour l’en-tête HTTP, ni pour le nom du user-agent, ni pour les valeurs spécifiées. » Accéder à la citation
Google — l’obligation d’autoriser l’exploration, point central
- “…robots meta tags and” (traduction) « Google découvre les balises meta robots et » ; “X-Robots-Tag HTTP headers are” (traduction) « les en-têtes HTTP X-Robots-Tag » ; “discovered when a URL” (traduction) « lorsqu’il explore une URL » ; “is crawled.” (traduction) « donnée. » “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) « Quand robots.txt en interdit l’exploration, les informations d’indexation ou de diffusion restent invisibles et sont par conséquent ignorées. » Accéder à la citation
- “For the
noindexrule 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 thenoindexrule, and the page can still appear in search results, for example if other pages link to it.” (traduction) « Pour produire son effet, noindex exige que robots.txt ne bloque pas la page ou ressource et que le robot puisse autrement y accéder. À défaut, celui-ci ne verra jamais la règle, et la page pourra demeurer dans les résultats, notamment si elle reçoit des liens. » — Documentation Google Search Central. Accéder à la citation
Google — deux méthodes pour mettre en œuvre noindex
- “There are two ways to implement
noindex: as a<meta>tag and as an HTTP response header.” (traduction) « Il existe deux méthodes pour mettre en œuvre noindex : une balise meta ou un en-tête de réponse HTTP. » Accéder à la citation
nocache ≈ noarchive, est donc corroborée par des sources secondaires : vérifiez-la sur la page en direct avant de la considérer comme définitive. Les remarques de John Mueller sur le blocage robots.txt qui masque l’en-tête et la catégorie d’incidents CDN « Noindex detected in X-Robots-Tag » sont elles aussi paraphrasées ici depuis la couverture du secteur, et non citées, pour la même raison. Vérifiez les mots exacts dans un navigateur avant toute citation. X-Robots-Tag : aide-mémoire
Balise meta ou X-Robots-Tag : lequel utiliser ?
| Situation | Utiliser | Pourquoi |
|---|---|---|
| Page HTML dont vous maîtrisez le balisage | Balise meta robots | Solution la plus simple, par page, dans le <head> |
PDF, image, vidéo ou flux (sans <head>) | En-tête X-Robots-Tag | Aucun HTML où placer une balise meta |
| Règle pour tout un type de fichier ou tout le site | En-tête X-Robots-Tag | Une règle serveur les couvre tous |
| HTML de chaque page difficile à modifier | En-tête X-Robots-Tag | Configuration au niveau serveur ou CDN |
Les deux contrôles ne se recouvrent pas : ne les confondez pas
| Contrôle | Bloque l’exploration ? | Bloque l’indexation ? | À utiliser pour |
|---|---|---|---|
Interdiction robots.txt | Oui | Non | Tenir les robots à l’écart des espaces sans valeur |
X-Robots-Tag: noindex | Non (la ressource doit rester explorable) | Oui | Retirer un fichier de l’index |
Bloquez un fichier dans robots.txt et ajoutez X-Robots-Tag: noindex : les deux mesures s’annulent, puisque Google n’explore jamais le fichier pour lire l’en-tête. Affectez une seule fonction à chaque URL.
La règle « mêmes directives, l’une ou l’autre méthode de transmission » est un engagement documenté par Google. C’est une hypothèse de travail raisonnable pour la plupart des grands robots, dont le socle Bing recoupe ces directives, mais ce n’est pas un standard garanti entre moteurs : vérifiez directement auprès de tout robot ou fournisseur dont vous dépendez.
Syntaxe par robot
| Objectif | En-tête |
|---|---|
| Noindex pour tous | X-Robots-Tag: noindex |
| Noindex pour Google uniquement | X-Robots-Tag: googlebot: noindex |
| Règles différentes selon le robot | X-Robots-Tag: googlebot: noindexX-Robots-Tag: bingbot: nofollow |
| Retrait programmé | X-Robots-Tag: unavailable_after: 25 Jun 2010 15:00:00 PST |
| Indexation uniquement si la ressource est intégrée | X-Robots-Tag: noindex, indexifembedded |
Sans jeton user-agent, la règle s’applique à tous les robots. Le nom de l’en-tête, celui du user-agent et les valeurs ne sont pas sensibles à la casse.
Vérification en une ligne
curl -sI https://example.com/file.pdf | grep -i x-robots-tag- Simulation de Googlebot :
curl -A "Googlebot" -sI https://example.com/file.pdf - Vérifiez toujours l’URL publique, derrière le CDN, pas seulement l’origine.
Checklist de mise en œuvre du X-Robots-Tag
- Choisissez les types de réponse et modèles d’URL qui nécessitent une directive au niveau de l’en-tête.
- Laissez les ressources concernées explorables afin que les robots puissent lire l’en-tête.
- Appliquez les directives à une seule couche connue : origine, application, serveur web, CDN ou périphérie.
- Testez séparément les réponses réussies, redirigées, en erreur, en cache et hors cache.
- Vérifiez les préfixes propres aux robots uniquement lorsqu’une véritable politique distincte est voulue.
- Documentez le responsable et une procédure de retour arrière avant toute règle large par chemin ou type de fichier.
Procédure : un déploiement X-Robots-Tag touche les mauvaises URL
- Suspendez la règle large ou le déploiement edge.
- Relevez les en-têtes d’échantillons touchés et intacts, y compris l’état du cache et les redirections.
- Identifiez la couche responsable et la correspondance exacte de chemin, de type MIME ou de route.
- Resserrez la condition et retirez les directives en double des autres couches.
- Purgez les caches concernés, puis retestez toute la matrice d’échantillons.
- Terminez lorsque les ressources visées portent une politique cohérente et que les pages ordinaires n’en héritent pas.
Problèmes courants liés au X-Robots-Tag
L’origine envoie l’en-tête, mais pas l’URL publique
Cause : le CDN ou le proxy le supprime, le met en cache ou le remplace. Correction : inspectez chaque étape et configurez la réponse edge publique comme source de vérité.
noindex ne prend jamais effet
Cause : robots.txt bloque la ressource ; le robot ne peut donc pas lire son en-tête de réponse. Correction : autorisez l’exploration et conservez la réponse noindex.
Les pages HTML héritent d’une règle réservée aux PDF
Cause : la correspondance serveur est trop large ou utilise une mauvaise condition de type MIME ou de chemin. Correction : resserrez la règle et testez plusieurs types de fichiers et de routes avant un nouveau déploiement.
Outils pour contrôler les règles robots par en-tête
- HTTP Header Checker — inspecte la réponse X-Robots-Tag publique.
- Robots.txt Tester — confirme que le robot peut récupérer une ressource dont il doit lire l’en-tête.
- Redirect Chain Mapper — indique quelle réponse d’un parcours de redirection porte la directive.
- Staging vs. Production SEO Diff — détecte avant la mise en ligne les écarts d’en-têtes propres à l’environnement.
Tests de validation
Tester la matrice d’en-têtes en production
Test à exécuter — demandez des types de fichiers, chemins, statuts et réponses en cache/hors cache représentatifs avec HTTP Header Checker ou curl -I. Résultat attendu — seules les réponses visées portent la directive exacte. Interprétation d’un échec — une règle de correspondance, un cache ou un proxy est trop large ou incohérent. Fenêtre de surveillance — immédiate. Déclencheur de retour arrière — revenez en arrière si du HTML indexable ou des ressources sans rapport héritent de noindex.
Tester l’explorabilité avec noindex
Test à exécuter — vérifiez l’accès robots, puis récupérez l’en-tête de réponse comme le robot cible. Résultat attendu — l’exploration est autorisée et X-Robots-Tag: noindex est visible. Interprétation d’un échec — les règles robots ou la syntaxe propre au robot empêchent la lecture de la politique. Fenêtre de surveillance — immédiate sur le plan technique ; le retrait de l’index attend une nouvelle exploration. Déclencheur de retour arrière — rétablissez immédiatement l’accès si une modification large de robots bloque des ressources nécessaires.
Testez vos connaissances : X-Robots-Tag
Configuration serveur pour appliquer noindex aux PDF
Voici des modèles de configuration éprouvés que j’utiliserais. Ils constituent de bons points de départ, mais vérifiez-les sur votre propre infrastructure, ainsi qu’avec le contrôle curl -I en production plus bas, avant de vous y fier. Il ne s’agit pas de citations de Google.
Apache (.htaccess ou hôte virtuel — nécessite mod_headers)
Appliquer noindex à tous les PDF :
<FilesMatch "\.pdf$">
Header set X-Robots-Tag "noindex, nofollow"
</FilesMatch>Plusieurs types de fichiers à la fois :
<FilesMatch "\.(pdf|docx?|xlsx?|pptx?)$">
Header set X-Robots-Tag "noindex, noarchive, nosnippet"
</FilesMatch>Remarques : Apache exige l’activation de mod_headers. Header set remplace toute valeur existante ; utilisez Header append si une autre règle peut déjà définir l’en-tête. Pour cibler un robot, placez le jeton dans la valeur : Header set X-Robots-Tag "googlebot: noindex".
Nginx (dans un bloc server {} ou location)
Appliquer noindex à tous les PDF :
location ~* \.pdf$ {
add_header X-Robots-Tag "noindex, nofollow";
}Plusieurs types :
location ~* \.(pdf|docx?|xlsx?|pptx?)$ {
add_header X-Robots-Tag "noindex, noarchive, nosnippet";
}Remarques : la directive doit se trouver dans un bloc server/location actif, et Nginx doit être rechargé avec nginx -s reload. Piège d’héritage : Nginx n’hérite des directives add_header d’un bloc parent server {} dans un bloc enfant location {} que si l’enfant ne possède aucun add_header. Dès qu’un bloc location ajoute un en-tête, même sans rapport comme CORS ou cache-control, il cesse silencieusement d’hériter de tous les add_header définis plus haut, y compris votre X-Robots-Tag. Dans ce cas, répétez la ligne X-Robots-Tag dans le bloc enfant : ne supposez pas qu’elle a été transmise.
Cloudflare : deux possibilités
Option 1 — Règle de transformation (sans code). Rules → Transform Rules → Modify Response Header → définissez X-Robots-Tag = noindex, nofollow lorsque http.request.uri.path se termine par .pdf.
Option 2 — Worker sur une route correspondant à *.pdf :
export default {
async fetch(request, env, ctx) {
const res = await fetch(request);
const out = new Response(res.body, res);
out.headers.set("X-Robots-Tag", "noindex, nofollow");
return out;
}
};Dans les deux cas, un CDN placé devant votre origine peut ajouter, retirer ou mettre en cache cet en-tête. C’est précisément pourquoi vous devez vérifier l’URL publique ci-dessous, et non l’origine.
Vérifier l’en-tête public avec curl
curl -I affiche les en-têtes de réponse sans télécharger le corps. Vérifiez l’URL publique, celle que Google récupère, et simulez facultativement la vue du robot.
macOS / Linux
# Print all response headers
curl -I https://example.com/file.pdf
# Just the X-Robots-Tag line
curl -sI https://example.com/file.pdf | grep -i x-robots-tag
# See what Googlebot would receive (spoof the user agent)
curl -A "Googlebot" -sI https://example.com/file.pdf | grep -i x-robots-tag
# Confirm on a real GET request too — -I sends HEAD, and a rule scoped to
# GET-only responses won't show up in a HEAD check
curl -sD - -o /dev/null https://example.com/file.pdf | grep -i x-robots-tagWindows (PowerShell)
# Inspect the response headers
(Invoke-WebRequest -Method Head -Uri "https://example.com/file.pdf").Headers["X-Robots-Tag"]
# Spoof the Googlebot user agent
(Invoke-WebRequest -Method Head -Uri "https://example.com/file.pdf" `
-UserAgent "Googlebot").Headers["X-Robots-Tag"]Si l’en-tête manque, les causes les plus courantes sont les suivantes : il est défini à l’origine mais supprimé ou remplacé par le CDN ; mod_headers n’est pas activé dans Apache ; la configuration Nginx n’a pas été rechargée ; un bloc Nginx location a redéfini add_header et cessé silencieusement d’hériter du X-Robots-Tag parent ; la règle ne s’applique qu’à GET alors que vous avez testé avec -I (HEAD) ; ou le fichier est bloqué dans robots.txt, si bien que Google ne le récupère jamais pour voir l’en-tête.
Journal des modifications
Mis à jour le 21 août 2026.
Résumé éditorial et détails enregistrés des changements.Détails des changements
-
Les notes détaillées des changements sont actuellement disponibles en anglais.
-
Les notes détaillées des changements sont actuellement disponibles en anglais.
Comparaison complète indisponible — aucun instantané antérieur n’a été archivé pour cette révision.
Mis à jour le 21 août 2026.
Résumé éditorial et détails enregistrés des changements.Détails des changements
-
Les notes détaillées des changements sont actuellement disponibles en anglais.
Comparaison complète indisponible — aucun instantané antérieur n’a été archivé pour cette révision.
Mis à jour le 18 juil. 2026.
Résumé éditorial et détails enregistrés des changements.Détails des changements
-
Les notes détaillées des changements sont actuellement disponibles en anglais.
-
Les notes détaillées des changements sont actuellement disponibles en anglais.
-
Les notes détaillées des changements sont actuellement disponibles en anglais.
-
Les notes détaillées des changements sont actuellement disponibles en anglais.
-
Les notes détaillées des changements sont actuellement disponibles en anglais.
Comparaison complète indisponible — aucun instantané antérieur n’a été archivé pour cette révision.