Mettre un site PHP en mode maintenance avec HTTP 503
Lorsqu'on effectue une mise à jour importante sur un site internet, il faut le mettre en mode maintenance, c'est-à-dire le désactiver temporairement en le rendant inaccessible, avec un message indiquant aux visiteurs qu'ils doivent revenir dans quelques heures, laissant ainsi le temps au webmaster de mettre à jour le site.
Il y a beaucoup de façon de procéder, mais certaines méthodes peuvent être catastrophiques pour le référencement, elles peuvent provoquer une détérioration du positionnement dans les résultats des moteurs de recherche comme Google (surtout Google, qui attache beaucoup d'importance à l'expérience utilisateur).
La seule façon de bien faire, celle qui est recommandée par Google, c'est que toutes les pages du site renvoient un header HTTP 503 Service Unavailable.
Dans ce tutoriel, nous allons donc voir comment créer une page de maintenance, et rediriger toutes les requêtes dessus, sauf pour le propriétaire du site (ce qui permet de pouvoir tester le site tranquillement quand il est encore en maintenance pour le reste du monde, et s'assurer que tout fonctionne bien avant la remise en ligne).
Créer une page de maintenance
La première étape c'est de créer une page de maintenance. Le seul point technique important est que cette page doit renvoyer le code HTTP 503, en PHP on fait ça très simplement avec la fonction header()
:
<?php header('HTTP/1.1 503 Service Unavailable'); header('Retry-After: 3600'); ?> <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Maintenance</title> </head> <body> <p>Le site est en maintenance, merci de repasser dans 1 heure.</p> </body> </html>
Placez ce code dans un fichier maintenance.php, à la racine de votre site.
Router toutes les URL vers la page de maintenance
La seconde étape, c'est de faire pointer toutes les URL du site vers la page de maintenance. Attention, il ne s'agit pas d'une redirection (301 ou 302), mais bien d'un routage, qu'on effectue sous Apache via une règle de réécriture d'URL (mod_rewrite). Placez ce code dans le fichier .htaccess à la racine de votre site :
Si vous voulez en savoir plus c'est par ici : comparer 2 colonnes dans excel.
RewriteEngine on # Mode maintenance RewriteCond %{REMOTE_ADDR} !^123\.123\.123\.123 RewriteCond %{REQUEST_URI} !^/maintenance.php [NC] RewriteRule .* /maintenance.php [L]
Il faut bien entendu remplacer 123\.123\.123\.123 par votre adresse IP (ça sert à exclure cette IP du mode maintenance, pour vous permettre de pouvoir accéder normalement au site).
Si vous utilisez Wordpress, ce CMS dispose d'un mode maintenance natif (built-in).
Découvrez ce tutoriel photoshop : texte automne à lire tout de suite !