Attention à la désindexation avec l’entête X-Robots-Tag

Mathieu Chartier SEO 4 commentaires

GoogleBot et l'entête X-Robots-Tag

Gary Illyes a publié un tweet laconique le 2 février 2017 au sujet de l'entête HTTP X-Robots-Tag. Si vous n'indiquez pas une valeur appropriée (valeur "none" notamment), le porte-parole de Google a indiqué que cela pourrait être interprété comme du "no-index" par défaut. Il serait dommage de générer des entêtes automatiquement ou sans réfléchir et de se retrouver désindexer rapidement.

Dans les faits, l'entête X-Robots-Tag correspond peu ou prou à la balise <meta name="robots" content="..."/>. Son objectif est de donner des directives (suivies ou non) pour GoogleBot et consorts. Toutefois, la valeur "none" risque d'être interprétée comme la valeur "noindex", tel que l'indique Gary Illyes :

Rappel, la directive « none » signifie que les robots n’indexent pas. « X-Robots-Tag: none » == « X-Robots-Tag: noindex ».

La documentation de Google rappelle certaines des valeurs valables pour X-Robots-Tag. L'avantage de cette méthode est certainement d'être plus directe mais aussi de permettre davantage de possibilités que la balise meta presque équivalente. Voici quelques exemples commentés dans un .htaccess si cela vous est inconnu (ou plus trop en tête) ou pour vous montrer des cas particuliers permis par l'entête HTTP. Pour rappel, vous pouvez les appeler avec la fonction header() en PHP ou encore d'autres manières, j'ai choisi la méthode de l'.htaccess juste pour l'exemple :

Ce ne sont que des exemples dont la plupart ne fonctionne qu'avec GoogleBot, mais cela donne une idée de l'intérêt de l'entête HTTP X-Robots-Tag. On peut notamment rendre son usage dynamique en PHP avec des structures de contrôle if() { ... } et donc mieux gérer tous les cas de figure.

4 commentaires

  • afronob dit :

    Attention, la balise FilesMatch doit se fermer avec une balise /FilesMatch et non /Files

  • The Next dit :

    Merci Mathieu.
    Comment faire pour désindexer ce genre de page ?
    https://www.exemple.com/?view=brand&lang=en_US&brand_id=2&page=11&limit=20

    J'ai tenté ceci qui ne semble pas fonctionner

    RewriteCond %{QUERY_STRING} ^view=brand(.*)$
    RewriteRule .* - [E=NOINDEX_HEADER:1]

    Header set X-Robots-Tag "noindex" env=NOINDEX_HEADER

    Une piste peut-être ?

    • Bonjour,
      Tout dépend comment vous voulez la désindexer cette page. Si c'est uniquement une désindexation naturelle, alors il est inutile de passer par un fichier .htaccess avec des RewriteRule. En théorie, un fichier robots.txt peut suffire ou une entête X-Robots-Tag.

      Avec le robots.txt, cela se ferait ainsi par exemple :
      User-agent: *
      Disallow: /*view=brand*

      Avec le X-Robots-Tag, il suffirait de placer un petit code PHP dans les pages concernées, avec la fonction suivante en haut de page : < ?php header("X-Robots-Tag: noindex, nofollow", true); ?>

      Sinon, il faudrait effectivement passer par un fichier .htaccess pour le faire, ce qui est plus ou moins pratique selon les cas. En effet, vous avez plusieurs possibilités avec Apache, c'est de passer par les blocs ou mais ça traite des dossiers/fichiers uniques, donc il faudrait taper toutes les URL à la main. Il existe des variantes avec expressions régulières, et mais ces dernières ne sont utilisables que dans un fichier httpd.conf (selon la documentation Apache), donc on ne peut pas les faire fonctionner dans un fichier .htaccess...

      Idéalement, ajoutez donc à une des deux premières méthodes que j'ai citées des redirections 301 dans un fichier .htaccess pour que les anciennes URL redirigent vers des alternatives nouvelles quand c'est pertinent. En général, cela accélère la désindexation.

  • Déposer un commentaire

    L'adresse de messagerie ne sera pas publiée.* Champs obligatoires