Lorsque vous mettez à jour votre plateforme de blog, lorsque vous corrigez des bugs sur votre thème… votre blog devient, ou doit être, inaccessible pendant un certain temps. Je viens de faire la mise à jour de Blog Tool Box vers la version 2.3 de WordPress et le temps de faire les sauvegardes, de supprimer les fichiers du ftp, de ré-uploader les nouveaux et enfin de mettre à jour tous les plugins, je devais bloquer l’accès au blog. Au lieu de laisser à la vue de tout le monde la mutation du blog et toutes les erreurs qu’elle affiche pendant ce laps de temps, je voulais rediriger les visiteurs vers une page expliquant que le blog est en cours de maintenance et qu’il serait de nouveau accessible dans 1h si tout va bien.
Il est vrai qu’il existe le plugin Maintenance Mode pour WordPress qui permet de créer facilement une page de maintenance où seront automatiquement dirigé les lecteurs. Ce plugin fonctionne très bien, on peut personnaliser le message de maintenance, annoncer le retour du blog dans X minutes etc… sauf que pour cette mise à jour majeure de WordPress il faut désactiver tout les plugins pour éviter de gros problèmes. Je devais donc trouver un autre moyen pour mettre en place cette page de maintenance. Après quelques recherches et essais infructueux, j’ai finalement trouvé une solution qui fonctionne très bien à base d’un fichier .htaccess spécial maintenance et d’une page d’information qui annonce la maintenance.
La page de maintenance
Cette page sera celle affichée sur le navigateur du visiteur arrivant sur votre blog pendant la maintenance.
<?php
ob_start();
header('HTTP/1.1 503 Service Temporarily Unavailable');
header('Status: 503 Service Temporarily Unavailable');
header('Retry-After: 3600');
header('X-Powered-By:');
?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xml:lang="en" lang="en" xmlns="http://www.w3.org/1999/xhtml">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Blog en maintenance</title>
<meta name="robots" content="none" />
</head>
<body>
<!-- Votre message de maintenance -->
</body>
</html>
On utilise le code HTTP 503 qui signifie que le serveur est actuellement indisponible pour cause de surcharge ou de maintenance. Par ailleurs, ce code 503 est accompagné d’un autre message signalant aux robots de ne pas indexer cette page (content= »none »).
Il suffit maintenant de déposer ce fichier « 503.php » à la racine de votre espace web.
Le fichier .htaccess spécial maintenance
Ce fichier n’est pas en remplacement de votre « .htaccess » actuel, ce « spécial maintenance » sera activé au moment de la maintenance. Nommez ce fichier « 503.htaccess » , de cette façon lorsque vous voudrez activer votre maintenance, il suffira de renommez l’actuel « .htaccess » en « blabla.htaccess » et le « 503.htaccess » en « .htacess ». Plus clairement : on active l’un ou l’autre des deux fichiers en les renommant.
Options +FollowSymLinks
RewriteEngine On
RewriteBase /
RewriteCond %{REMOTE_ADDR} !^123\.123\.123\.123
RewriteCond %{REQUEST_URI} !^/503.php [NC]
RewriteRule .* /503.php [L]
La 4ème ligne est à modifier en fonction de votre adresse IP pour que votre blog reste accessible à vous et uniquement à vous pendant la maintenance.
Et voilà, avec ces deux petits fichiers vous pourrez mettre à jour tranquillement votre blog tout en prévenant vos lecteurs que votre blog sera de nouveau en ligne après cette maintenance. De cette manière vous éviterez de présenter un blog tout cassé et non fonctionnel pendant ce laps de temps.
merci pour ce petit tuto, bien expliqué !
J’ai testé ce système pour afficher une page de maintenance, mais par contre je voudrais savoir une chose. Comment se fait-il qu’une fois sur la partie publique j’ai un message d’erreur « Not Found » si je clique sur un des billets déjà publiés.
D’avance merci !!!
bonjour,
impossible de faire fonctionner cette astuce qui semble pourtant simple.
j’ia beau placer les dossiers a la racine de mon site, la page de maintenance ne s’affiche pas !
la racine de mon site c’est bien le dossier qui contient tous les fichiers WP dont WP-content par exemple ?
merci pour ton aide…
Une suggestion importante :
Mettre RewriteRule .* /503.php [R=302,L] afin que le moteur de recherche ne désindexe pas vos pages déjà indexées.