7

SEO et site en maintenance, on raconte quoi à Googlebot?

Erreur 503Il est parfois nécessaire de mettre son site en pause quand des maintenances doivent être effectuées (upgrade d'un CMS, maintenance base de données, mise en ligne d'un site de préprod, etc.).
Une page "Site en maintenance" sera donc affichée sur le site Web, invitant les internautes à patienter quelques minutes heures et à revenir plus tard, et ce quelque soit l'URL appelée.

Mais un problème se pose... pendant ce temps là, Googlebot, Bingbot, Yahoo!Slurp et tous nos amis crawlers qui visitent le site, on leur montre quoi?

Erreur 503, c'est dans l'en-tête

Les crawlers, ils faut leur parler dans les en-têtes HTTP. Il est recommandé de renvoyer aux robots d'indexation un status HTTP 503 (5xx = erreurs) qui signifie: "Service indisponible" (Service Unavailable / Service temporairement indisponible ou en maintenance).

C'est pas bien!Il arrive que certains administrateurs système, peu soucieux du sort réservé à Googlebot et plutôt concentrés sur la maintenance elle-même, effectuent des redirections temporaires (302) vers une page qui elle répondra en 503. Googlebot n'aime pas ça, quand il a trop de 302, ça peut vite l'agacer: site instable, on ne sait pas où on va...
Faire des redirections 301 vers une page répondant en 503 est également une mauvaise solution puisque 301, c'est permanent. Pour toujours quoi!  ça cloche.

Donc on fait quoi? Plutôt que de donner un coup de massue à votre administrateur système préféré (comme le fait si bien Laura à Nicky Larson pour d'autres raisons), nous allons afficher une page d'erreur 503 pour l'ensemble des URL sans redirection intermédiaire. Cela permettra à Googlebot de ralentir son crawl temporairement, plutôt que de se recevoir des status HTTP divers et variés qui pourraient vous pénaliser pour la suite.

Update:

Pour s'exprimer plus directement vis à vis de Googlebot, il est conseillé de renvoyer une 503 sur l'appel du fichier robots.txt: cela bloquera le crawl de Googlebot, pour éviter de solliciter le fameux serveur en cours de maintenance justement. Il reviendra régulièrement visiter le fichier robots.txt, et relancera son crawl dès que ce dernier sera à nouveau disponible en 200 (source: https://plus.google.com/+PierreFar/posts/Gas8vjZ5fmB).

 

Apache, paye ta page d'erreur 503

Pour une meilleure expérience utilisateur, il est préférable de lui afficher une page d'erreur personnalisée moche afin de lui suggérer de revenir prochainement. Via des règles de réécriture et quelques conditions, voici les lignes à rajouter dans la configuration de votre serveur Apache (vhost, ou .htaccess), pour qu'il affiche une page d'erreur 503 (503.html dans cet exemple), sans passer par des redirections:

#on déclare sa page d'erreur 503
ErrorDocument 503 /503.html
#on réveille le module mod_rewrite
RewriteEngine On
#pas de 503 pour votre adress IP
RewriteCond %{REMOTE_ADDR} !123.45.67.89
#On ne renvoit pas de 503 pour les fichiers images, Googlebot-Image peut continuer son travail
RewriteCond %{REQUEST_URI} !.(css|gif|jpg|png)$
#on evite les boucles de redirection
RewriteCond %{DOCUMENT_ROOT}/503.html -f
RewriteCond %{SCRIPT_FILENAME} !503.html
RewriteCond %{REQUEST_URI} !^/?503
#on réecrit toutes les URL
RewriteRule ^.*$ /503.html [R=503,L]

Les commentaires (#) vous permettront d'adapter le code selon vos besoins.

Et le tour est joué!

7 commentaires

    • A la limite Jérôme pourrait dire très”bon” article, article étant masculin.

      Sinon oui, c’est très bien expliqué, à noter qu’il manque souvent de petits clins d’œil au serveur web Nginx, et pour lequel il est tout aussi facile de faire une redirection.

      Mais sinon, merci 😉

  1. Au top Aymeric merci pour le partage. Il est vrai qu’on voit souvent les développeurs appliquer soit des redirections 302 (j’ai déjà vu aussi des 301!!) vers des pages “merdiques/moches”. A garder en tête 😉

  2. Hello Aymeric,

    c’est parfait ton article.

    J’ai pour habitude d’utiliser une méthode avec .htaccess de mon coté vu que j’ai rarement la main sur la config Apache mais je garde ton article sous le coude si jamais le cas se présenterait.

    C’est clair que ta méthode est très intéressante ! 🙂

    A RT et à diffuser donc.

    • @Nicolas Augé, tu peux utiliser le code ci dessus dans ton .htacess.
      Merci pour le tuto (surtout pour les 3 lignes qui empêchent de boucler), je note ça dans un coin

  3. Merci d’avoir traité ce sujet bien souvent mis de côté…
    Les entête Http sont importantes pour envoyer le bon message au bon moment et si on ne fait pas attention cela peut vite devenir problématique. .. je connais quelqu’un qui en a fait les frais…

  4. MERCI pour la partage de ces astuces et conseils , je en avais besoin , surtout hier quand mon serveur dédié tombait en panne

Laisser un commentaire

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