Réconcilier SEO et WebPerf au niveau des redirections de (sous)domaines

Le SEO et la performance Web sont deux disciplines très différentes liées à la mise en ligne de sites Web, avec des objectifs qui parfois peuvent être contradictoires. Mais des fois, ce qui paraît contradictoire ne l’est en fait pas si on y regarde de plus près, avec un peu de pragmatisme.

SEO : un seul (sous-)domaine tu présenteras

Vous le savez sans doute si vous connaissez un peu le sujet du SEO — c’est certain si vous appliquez la bonne pratique nº78 de la liste Opquast SEO — il est conseillé de toujours servir un contenu donné depuis un même (sous-)domaine afin d’éviter ce que l’on appelle le duplicate content. Le duplicate content est mal vu par les moteurs de recherche comme Google qui peuvent prendre cela pour du SPAM, et vous pénaliser dans les résultats de recherche.

Il est donc généralement conseillé de faire une redirection permanente — code HTTP 301 — en cas de requête vers un autre (sous-)domaine.

Par exemple, je préfère que mes pages soient accédées à l’URL http://gasteroprod.com/ plutôt que http://www.gasteroprod.com/, le www. n’ayant franchement aucun intérêt. On va dire que j’adhère au mouvement no-www.

J’avais donc mis dans ma configuration Apache les directives suivantes :

RewriteCond %{HTTP_HOST} ^www\.gasteroprod\.com [NC]
RewriteRule ^(.*) http://gasteroprod.com/$1 [QSA,R=301,L]

WebPerf : les redirections tu éviteras

Malheureusement, chaque redirection provoque une attente supplémentaire pour le visiteur, qui peut être néfaste pour sa perception de qualité de service du site.

Il est donc recommandé par tous les experts WebPerf — Yahoo! YSlow et Google PageSpeed notamment1 — de provoquer un minimum de redirections, particulièrement lors de l’accès à une page.

On est d’accord, cela peut ne représenter que 150 ms par redirection, mais j’ai vu des sites enchaînant plusieurs redirections avant de fournir le contenu.

Si vous utilisez — et vous le devez — WebPageTest pour tester la performance de vos sites, il vous suffit de repérer les lignes jaunes sur la cascade, ce sont les redirections.

La page d’accueil de la FNAC est par exemple finalisée après 11 redirections. L’une — qui impacte le plus l’utilisateur — pour rediriger de http://fnac.fr/ vers http://www.fnac.com/ et les 10 autres à cause de services de publicité et statistiques :

Mais alors comment faire, puisque le SEO me demande de faire des redirections ?

Tout le monde, tu contenteras

C’est en fait assez simple techniquement, mais il faut surtout comprendre deux choses essentielles :

  • L’Internaute moyen2 s’en fiche royalement de naviguer sur http://gasteroprod.com/ ou sur http://www.gasteroprod.com/, c’est le contenu qui l’intéresse3;
  • Seuls les moteurs de recherche sont intéressés par des redirections qui leur permettent de réduire leur travail d’identification de potentiel duplicate content.

Du coup, c’est effectivement simple, il suffit de ne faire les redirections que pour les moteurs de recherche, en les identifiant à l’aide de leur signature User Agent. Oui, je sais, le User Agent Sniffing c’est mal, mais là c’est un cas extrême, on n’essaie pas de servir différents contenus et/ou présentations à des navigateurs.

Voilà donc ce que cela donne en réduisant la cible à Googlebot, la signature du robot d’indexation de Google :

RewriteCond %{HTTP_USER_AGENT} Googlebot
RewriteCond %{HTTP_HOST} ^www\.gasteroprod\.com [NC]
RewriteRule ^(.*) http://gasteroprod.com/$1 [QSA,R=301,L]

Vous pouvez bien entendu ajouter d’autres robots si cela vous chante…

  1. Et même peut-être un jour une bonne pratique Opquast webperf… ⬆︎

  2. Ce n’est pas péjoratif. ⬆︎

  3. Enfin j’espère… ⬆︎

Si vous voulez signaler une erreur ou proposer une modification de ce texte, n'hésitez pas à l'éditer directement à la source sur Github.

Webmentions (?)

No webmentions were found