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

écrit par Aymeric

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/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/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:
[tables width="500px"]
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|~|~
[/tables]

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

écrit dans SEO par Aymeric | 12 commentaires

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