12

Robots.txt et URL avec des caractères spéciaux: le test

GoogleBotBien que le robots.txt ne soit pas toujours respecté, c’est malgré tout un élément indispensable pour éviter que Google crawl des URL sans intérêt pertinentes, et provoque des dommages collatéraux. J’ai récemment eu un problème bien particulier pour un client, des URL bloquées par le fichier robots.txt et qui malgré tout se sont retrouvées crawlées, et indexées.

Cela était du à l’encodage des URL, mais  sur une portion bien spécifique de l’URL: la chaîne de paramètres (query_string pour les intimes).
J’ai donc réalisé un test grâce à GoogleWebmaster Tools pour voir comment Google traitait les URL encodées. Le CMS utilisé était RBSChange (plateforme Ecommerce)

Traitement des URL sans chaîne de paramètres

Sans revenir sur l’origine des URL encodées, voici le test que j’ai effectué pour voir la manière dont Googlebot traitait ce type d’URL avec le fichier robots.txt. En l’occurrence, cela concerne des URL contenant des crochets: « [ ] ». Supposons une URL de ce type:

http://www.yapasdequoi.com/blog/categorie[19]/mapage.html

Caractères non encodés:

Disallow: /categorie[19]/mapage.html –> ça fonctionne, l’URL est bien bloquée.

disallow robots.txt

Caractères encodés:

Disallow: /categorie%5B19%5D/mapage.html –> ça ne fonctionne pas, l’URL n’est pas bloquée…

disallow robots.txt encoded

Traitement des URL avec chaîne de paramètres

J’ai cette fois-ci utilisé une URL avec une chaîne de paramètres et des crochets dans les paramètres, puisque cela peut se produire sur RBSChange par exemple.

Voici l’URl testée:

http://www.yapasdequoi.com/blog/categorie?id=[19]

Caractères non encodés:

Disallow: /categorie?id=[19] –> ça ne fonctionne pas, l’URL n’est pas bloquée…

3

 

Caractères encodés:

Disallow: /categorie?id=%5B19%5D –> ça  fonctionne, l’URL est bloquée!

4

Robots.txt et caractères spéciaux

Drôle de comportement entre l’URL de la requête et sa chaîne de paramètres!

Quand on a des caractères [ ] dans la REQUEST_URI, il ne faut pas les encoder; quand on en a dans la chaîne de paramètres, il faut les encoder… [ devient alors %5B, et ] devient %5D. J’ai testé d’autre caractères spéciaux afin de voir si ils étaient les seuls concernés par ce problème, et il semblerait que oui…

– voici les caractères spéciaux qui n’ont pas besoin d’être encodés, où qu’ils se trouvent: + & ( ) , . / : ; = ? @ ‘ ~ % !

Cela parait assez logique pour le slash et les sous répertoires ainsi que le point d’interrogation et le signe & qui sont utilisés pour passer les paramètres d’URL.

– à l’inverse, voici les caractères spéciaux qu’il faut encoder systématiquement: espace, « ,  <, >, \, ^, {, }, |

– et ceux qu’il faut encoder uniquement quand ils sont présents dans la chaîne de paramètres: [ ]

Récapitulatif:

Caractère Codage URL REQUEST_URI QUERY_STRING
Espace %20 %20 %20
! %21 ! !
«  %22 %22 %22
% %25 % %
& %26 & &
( %28 ( (
) %29 ) )
+ %2B + +
, %2C | |
. %2E . .
/ %2F / /
: %3A : :
; %3B ; ;
< %3C %3C %3C
= %3D = =
> %3E %3E %3E
? %3F ? ?
@ %40 @ @
[ %5B [ %5B
|%5C %5C %5C
] %5D ] %5D
^ %5E %5E %5E
%60
{ %7B %7B %7B
| %7C %7C %7C
} %7D %7D %7D
~ %7E ~ ~

Et les caractères accentués?

Le test vient d’être complété pour les caractères accentués: il faut les encoder où qu’ils se trouvent, sinon les URL seront crawlées par Google d’après ce test:

http://www.yapasdequoi.com/wp-admin/a?èéàùô est bien bloqué avec la ligne suivante:
Disallow:/wp-admin/a?%C3%A8%C3%A9%C3%A0%C3%B9%C3%B4

mais pas avec cette ligne:
Disallow:/wp-admin/a?èéàùô

What else?

Alors, bug du parser de Google? En tout cas, mes URL avec crochets dans la chaîne de paramètres sont maintenant bien bloqués.

Vérifiez donc vos fichier robots.txt et les URL qui contiendraient des caractères à encoder 😉

Je vous recommande également ce billet de Sacha Tyzon de l’agence SeoH qui est très complet sur cet outil de test de robots.txt proposé par Google: http://www.seoh.fr/blog/test-outil-robots-txt-gwt.html

12 commentaires

  1. Bonjour,

    Excellent article sur le sujet qui va m’éviter de faire le test moi-même, merci pour le partage.
    Vas tu compléter le sujet avec les caractères accentués ?

  2. Hello Aymeric,
    Est-ce que la base ne serait pas d’écrire correctement ses URL, déjà ? 😉

    • Oui mais parfois, le mal est déjà fait: certains CMS n’écrivent pas correctement les URL, et on trouve aussi des URL avec accents dans les liens :-/ Mais je te rejoins, c’est mieux sans caractères spéciaux les URL 😉

  3. Salut Aymeric,

    Merci pour le partage et la mention.
    J’avais commencé à regarder les caractères spéciaux lors de mon test mais n’étais pas allé jusqu’au bout et n’avais pas remarqué toutes ces nuances.

    Espérons que cet outil soit vraiment fiable maintenant.

    • Avec plaisir Sacha, ton article est bien complet! (un lien naturel, un vrai^^).
      Comme tu dis, si ça ce trouve Googlebot n’a peut être pas la même interprétation que l’outil…

  4. Excellent article que j’attendais depuis des lustres !
    C’est génial d’avoir testé tout ça et surtout d’avoir mis le tableau d’encodage.

    Très utile, je suis sur que j’ai des règles foireuses à cause de cet encodage.

    Et comme d’habitude c’est bien écrit.

    Il y a juste un abus de langage au début puisque tu dis :
    « des URL bloquées par le fichier robots.txt et qui malgré tout se sont retrouvées crawlées, et indexées. »
    C’est impossible. D’ailleurs tu donnes toi même l’explication, en fait elles n’étaient pas bloquées puisque l’encodage n’était pas bon 😉

    « Bien que le robots.txt ne soit pas toujours respecté »
    Je pense le contraire. Je me permets de mettre un lien vers mon article sur le robots.txt qui pourrait ettayer la discussion et ou intéresser tes lecteurs 😉 http://www.nicemedia.fr/blog/articles-referencement/robots-txt-un-outil-puissant-et-meconnu-des-seo

    Merci pour le partage.

  5. Super article effectivement le comportement est bizarre. En tout cas Aymeric t’es au top tu l’étais au Tecknseo tu l’ai toujours à ce que je vois.
    Respect !

    • merci Alex, ça fait plais’. ravi que mes articles te plaises! Tu y vas cette année?

  6. Ping : Best of digital, robots.txt, amende et Googlinette

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *