Status 503 pour vos sites en maintenance

Lorsque vous faites des mises à jour importantes sur votre site, il est judicieux de mettre celui-ci en mode “maintenance“.

En effet, vos visiteurs peuvent être perturbés par les erreurs éventuelles de design et de code. De même, les moteurs de recherche peuvent indexer votre site pendant les opérations de mise à jour.

Bref, imaginez les effets néfastes d’une telle opération…

Les recommandations Google : le status 503 (service non disponible)

De plus Google recommande de renvoyer une erreur 503:

If my site is down for maintenance, how can I tell Googlebot to come back later rather than to index the “down for maintenance” page?
You should configure your server to return a status of 503 (network unavailable) rather than 200 (successful). That lets Googlebot know to try the pages again later.

Ce qui se traduit en gros par :

Si mon site est en mode de maintenance, comment puis-je indiquer à Google revenir plus tard au lieu d’indexer une page “Site en maintenance”?
Vous devriez configurer votre serveur pour qu’il renvoie un status 503 (réseau indisponible) plutôt qu’un status 200 (requête satisfaite). Ceci fait comprendre à Googlebot qu’il doit retester ces pages plus tard.

Maintenant qu’on sait ce qu’il faut faire, voici comment le faire :

Mode de Maintenance sur Apache via .htaccess avec php

Un fichier .htaccess permet de donner de configurer un serveur Apache à un niveau précis (d’un répertoire).

Il faut être assez attentif avant de modifier ces fichiers car une mauvaise manipulation peut rendre votre site inaccessible.

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REMOTE_ADDR} !^192\.168\.10\.100$
RewriteRule !upgrade.php$ /upgrade.php [L]
</IfModule>

Le principe est: on active l’engin de réécriture, pour toutes les adresses qui viennent sur le site à l’exception de celle de notre environnement de test, on redirige vers upgrade.php

Ceci aura pour conséquence de rediriger tous les visiteurs (à l’exception des visiteurs ayant l’adresse ip 192.168.10.100) vers la page upgrade.php à la racine de votre site.

Tout en haut de ce fichier, vous pouvez ajouter les instructions suivantes :

<? header("HTTP/1.1 503 Service Unavailable"); ?>

Ce fichier peut ensuite contenir du code html standard.

Mode de Maintenance sur Coldfusion via application.cfc

Sur les serveurs Coldfusion, on peut avoir un fichier application.cfc qui contient toutes les fonctions et variables de session et d’application.

Il existe une fonction qui peut servir tout à fait à cette tâche: onRequestStart.

<cffunction name="onRequestStart">
<cfset maintenanceMode = true />
<cfif maintenanceMode AND cgi.REMOTE_ADDR neq "192.168.10.100" >
	<cfinclude template="/upgrade.cfm" />
	<cfabort />
</cfif>
</cffunction>

Le principe ici: pour chaque requête de page, le serveur Coldfusion vérifie si la variable maintenanceMode est vraie (et que l’adresse ip du visiteur n’est pas celle de notre environnement de test) dans ce cas, le serveur lira un fichier upgrade.cfm situé à la racine du serveur.

La première instruction à insérer dans la page est le status 503 :

<cfheader statuscode="503" statustext="Service Unavailable">

Ce fichier peut ensuite contenir du code html standard.

Et pour IIS me direz-vous?

Je n’ai pas pu tester le mode de maintenance sur IIS5 ou IIS6 mais une piste à suivre est cette réponse sur un forum

Surtout la partie global.asa, ou global.asax (en fonction du framework employé).

Dans ce cas-ci, on emploira dans le fichier /upgrade.asp

<% response.Status="503 Service Unavailable" %>

Liens relatifs :

Comments

3 commentaires à “Status 503 pour vos sites en maintenance”

  1. Olivier le 06/04/2008 à 09h18.

    Vraiment très intéressant comme topic, c’est vrai qu’on pense pas toujours à ce genre de trucs…

  2. kamakl le 30/12/2008 à 13h08.

    Bonjour,

    effectivement, je suis dans le même problème, j’ai mis mon blog en mode “maintenance” et google a référencé mon blog en mode maintenance… Mon blog est actuellement en ligne, mais google maintient le ” mode maintenance ”

    Je suis sur wordpress, et je ne comprends pas vraiment ce qui est dit sur cet article… pourriez vous m’aider ??

    Adresse : contact@seductionbykamal.com

    Amicalement, Kamal

  3. Marin le 30/12/2008 à 13h21.

    Une petite recherche sur Google ne donne rien de spécial. Je me suis permis de suspecter ce commentaire comme un spam potentiel 🙂

Laissez un commentaire