Un billet très court mais qui pourra peut-être aider quelqu'un.

Je cherchais un moyen simple et rapide de mettre un site en mode maintenance. Par mode maintenance j'entends par là que toutes les requêtes effectuées vers ce site sont redirigées vers une seule et unique page.

Voici le contenu qui peut être mis dans la configuration de votre vhost (nécessitera donc un "reload" d'Apache) ou dans votre fichier .htaccess si ce dernier est pris en compte :
<IfModule mod_rewrite.c>
RewriteEngine On

RewriteBase /

RewriteCond %{REMOTE_ADDR} !^78\.XXX\.YYY\.ZZZ
RewriteCond %{DOCUMENT_ROOT}/maintenance.html -f

RewriteCond %{REQUEST_URI} !/maintenance.html$
RewriteRule $ /maintenance.html [R=302,L]
</IfModule>


Quelques informations sur ces quelques lignes :
_ dans un premier temps, on vérifie que le module rewrite d'Apache est bien activé sinon on ne fait rien via <IfModule mod_rewrite.c>,
_ on active ensuite la réécriture d'adresse par le biais de RewriteEngine On,
_ ensuite on définit le répertoire de base de la réécriture d'adresse en utilisant RewriteBase /
_ enfin, on met en place les différentes conditions à savoir que si l'adresse IP du visiteur n'est pas 78.XXX.YYY.ZZZ et que le fichier maintenance.html est présent alors on redirige toutes les requêtes vers ce fichier.

Comme vous l'aurez compris, cela permet de mettre votre site en maintenance si le fichier maintenance.html est présent à la racine de votre site. Renommez le fichier et votre site sera de nouveau accessible tout en restant accessible (mode maintenance ou non) depuis le ou les adresses IP que vous avez renseigné via la ou les instructions RewriteCond %{REMOTE_ADDR}.

Ceci permet d'être intéressant lorsque vous intervenez sur votre site et vous évite (sous réserve de devoir modifier les adresses IP autorisées à accéder au site lorsqu'il est en mode maintenance) d'avoir à effectuer des reload d'Apache.
22/08/2017 16:34:14

Partager cet article

Commentaires (Cliquer pour afficher)

comments powered by Disqus