Article mis à jour le 21/08/2015 (ajout des exemples pour Apache), publié initialement le 13/12/2007

L'entête HTTP, qu'est-ce que c'est ?
Il s'agit d'informations envoyées par le serveur web à celui qui cherche à accéder à un document (que ce soit le navigateur d'un internaute, le robot d'un moteur de recherche ou n'importe quoi d'autre). Une de ces informations est le code de statut HTTP, dont les valeurs les plus connues sont les suivantes :
- 200 : le document a été trouvé, il est bien disponible
- 301 : le document n'est plus disponible à l'adresse demandée, il a définitivement changé d'adresse (c'est-à-dire d'URL). On appelle ça une redirection permanente.
- 302 : le document n'est plus disponible à l'adresse demandée, il a temporairement changé d'adresse (c'est-à-dire d'URL). On appelle ça une redirection temporaire.
- 404 : le document est introuvable à l'adresse indiquée
Il y a bien d'autres codes (consultez la liste des codes HTTP si vous voulez plus de détails) mais l'entête HTTP peut contenir plein d'autres informations :
- le nom et la version du serveur web (exemple :
Server: Apache/2.0.59 (Unix)
) - la date de dernière modification du document (exemple :
Last-Modified: Wed, 26 Sep 2007 21:19:04 GMT
) - la taille du documents, en octets (exemple :
Content-Length: 7854
) - le type de document (exemples :
Content-Type: text/html
ouContent-Type: image/gif
) - et désormais la valeur du tag intitulé X-Robots-Tag
Valeurs possibles du tag X-Robots-Tag
Un peu comme la balise meta robots qui peut contenir plusieurs valeurs, sa version HTTP peut contenir les valeurs suivantes :
- noindex : indique au robot qu'il ne faut pas indexer la page. Cela ne signifie pas que le robot ne va pas la crawler : pour cela il faut utiliser le fichier robots.txt
- nofollow : indique au robot qu'il ne faut pas suivre les liens dans la page. Cela signifie que Google n'ira pas crawler les pages liées par la page contenant cette balise meta robots. Même si Google ne le précise pas dans son article, les moteurs ne tiendront pas non plus compte des liens présents sur la page dans leur algo (par exemple l'algorithme du PageRank).
- none : c'est identique à la combinaison noindex + nofollow
- nosnippet : indique au robot qu'il ne faut pas afficher de descriptif (snippet) dans la page de résultats. J'ai du mal à voir l'intérêt pour un webmaster d'utiliser cette possibilité puisque ce descriptif permet d'inciter l'internaute à cliquer sur le résultat (peut-être qu'il existe des cas où le descriptif créé par le moteur n'est pas assez pertinent aux yeux du webmaster).
- noarchive : indique au robot qu'il ne faut pas laisser l'accès à la version en cache. Le lien "En cache" dans la page de résultats ne sera donc pas affiché. Ceci peut servir à ceux qui passent leurs contenu d'une version publique accessible à une version archivée payante (sites de journaux par exemple).
- notranslate : pour interdire qu'une version traduite de cette page soit proposée dans les résultats
- noimageindex : pour interdire l'indexation des images situées dans la page
- unavailable_after:date : indique au robot que la page ne doit pas ressortir dans les résultats après la date indiquée (au format RFC 850)
Tout comme la balise meta, il est possible de combiner plusieurs valeurs en les séparant par des virgules, par exemple : X-Robots-Tag: noarchive, nosnippet.
Cette directive HTTP a été introduite par Google en juillet 2007. Depuis décembre 2007, Yahoo la supporte également.
Exemples
Voici un exemple d'entête HTTP avec 1 ligne X Robots Tag :
HTTP/1.1 200 OK Date: Tue, 25 May 2010 21:42:43 GMT (…) X-Robots-Tag: noindex (…)
Vous pouvez fournir plusieurs lignes X-Robots-Tag :
HTTP/1.1 200 OK Date: Tue, 25 May 2010 21:42:43 GMT (…) X-Robots-Tag: noarchive X-Robots-Tag: unavailable_after: 12 Jun 2015 20:00:00 PST (…)
Vous pouvez aussi regrouper les valeurs dans une seule ligne, séparées par une(des) virgule(s) :
HTTP/1.1 200 OK Date: Tue, 25 May 2010 21:42:43 GMT (…) X-Robots-Tag: noarchive, unavailable_after: 12 Jun 2015 20:00:00 PST (…)
X-Robots-Tag sur un serveur Apache
Il existe des bouts de code très pratiques, à mettre dans le fichier .htaccess concerné (souvent à la racine du site, mais éventuellement directement dans un répertoire précis).
Par exemple, pour ajouter une instruction X-Robots-Tag
noindex, nofollow
à la réponse HTTP de tous les fichiers .PDF d'un site, ajoutez l'extrait suivant dans le fichier .htaccess ou httpd.conf à la racine du site :
<Files ~ "\.pdf$"> Header set X-Robots-Tag "noindex, nofollow" </Files>
Vous pouvez utiliser l'en-tête X-Robots-Tag
pour les fichiers qui ne sont pas des HTML, comme les fichiers image, qui ne permettent pas d'utiliser des balises Meta pour les robots. L'exemple ci-dessous explique comment ajouter une instruction X-Robots-Tag
noindex
pour les fichiers image (.png, .jpeg, .jpg, .gif) d'un site entier :
<Files ~ "\.(png|jpe?g|gif)$"> Header set X-Robots-Tag "noindex" </Files>
A savoir : la commande filetype:pdf dans Google limite la recherche aux fichiers PDF.
Vérifier le contenu de l'entête HTTP
Si vous souhaitez voir le contenu de l'entête HTTP, par exemple pour vérifier que votre implémentation de X-Robots-Tag est correcte, il suffit d'utiliser un des nombreux outils à votre disposition :
- des outils en ligne comme celui sur WebRankInfo : analyse de l'entête HTTP (header)
- des outils intégrés au navigateur comme le propose le plugin Web Developer pour Firefox (ou Live HTTP Headers)
- des logiciels spécialisés comme mon crawler RM Tech
Egalement : balise canonique dans l'entête HTTP
Sachez que de façon similaire, il est également possible de définir une URL canonique par le biais d'un entête HTTP. En résumé, il faut utiliser le format suivant :
Link: <URL>; rel="canonical"
Par exemple :
Link: <https://www.webrankinfo.com/dossiers/techniques/url-canonique>; rel="canonical"
Discussion dans le forum : X-Robots-Tag
Olivier, merci pour l'article. As-tu des exemples de x-tobots tag via Htaccess (Apache 2.4) pour désindexer des URL avec du query string par exemple ?
donne-moi un ou des exemples d'URI
Bonjour,
Est ce que l'entete x-robots-tag NOINDEX est il pris en compte par les moteurs de recherche si dans le même temps il y a un code HTTP différent de 200 (par exemple 404 ou 410) ?
Merci
Non, il est ignoré (source Google)
Peut-on directement mettre cela dans apache au lieu de passer par un fichier php ?
Merci d'avance pour une réponse
Danny
Évidemment, il serait bon d'indiquer comment ajouter cette directive dans les fichiers. ;)
En PHP, il doit en être comme suit :
<?php header ('X-Robots-Tag: noindex,nofollow,noarchive'); ?>
En veillant à ce que rien ne soit généré avant header (), bien entendu.