Mettre son site en maintenance

Les Pages Perso Chez Free

Par Al, le , dans Créer ses pages perso. / Dernière modification : le par Al.
Tags : Assistance, Apache, PHP, Phishing, Suspension, Sécurité, Tutoriaux

Il arrive parfois qu'il soit nécessaire de réaliser des opérations de maintenance importantes sur votre site – pour le faire évoluer ou le rendre conforme – et qu'il faille condamner temporairement l'accès de tout ou partie de votre site le temps de faire ces transformations. Cela peut être pénalisant pour vous et vos visiteurs.

Voici quelques éléments qui pourront, sans doute, vous aider à réaliser sereinement vos opérations de maintenance.

La première chose à faire et de sauvegarder les données de votre espace web et de votre base de données SQL. Une fois cette opération réalisée, vous pouvez supprimer l'ensemble des données présentes sur le compte (ou dans la section qui sera l'objet de la maintenance).

Il faut maintenant prévenir les visiteurs de votre site (humains et robots) que celui-ci est temporairement indisponible. Il existe un code d'erreur HTTP spécifique pour un tel cas : le 503 Service Temporarily Unavailable. Nous allons donc créer une page spécifique, à l'aide de PHP, pour envoyer ce code d'erreur et le message d'information correspondant.

Le script PHP et la page d'information :

<?php
header('HTTP/1.1 503 Service Temporarily Unavailable',true,503);
header('Status: 503 Service Temporarily Unavailable');
header('Retry-After: 36000');
header('Cache-Control: no-store, must-revalidate');
header('Content-Type: text/html; charset=utf-8');
header('Vary: Accept-Encoding');
header('X-Robots-Tag: noindex,nofollow,noarchive');
ob_start('ob_gzhandler'); ?>
<!doctype html>
<html lang="fr">
<head>
<meta charset="utf-8" />
<meta name="robots" content="noindex,nofollow,noarchive"/>
<title>Site TrucMucheMachin - Site en maintenance…</title>
<style type="text/css">body{ background:#fff; height:70%; line-height:120%}#body-size{margin: 40px auto;max-width:750px;text-align:center;}*{font-size:.99em; font-family:Tahoma,Verdana,sans-serif; color:#404040; text-align:left}#border{background-color:#fff; height:100px; text-align:left;margin-top:100px}.content{ height:280px; padding:10px}.designinfo{ margin-top:5px; text-align:right; color:#666;font-size:.8em}h1{ margin-bottom:20px; padding:0; font-size:24px; font-weight:bolder;color:#404040; background-color:inherit; border-left:#404040}.text{ display:block; margin:5px 0 20px}.text a{ color:#404040; text-decoration:none; font-weight:bold}.text a:hover,.text a:active{ color:#404040; text-decoration:underline}.note{ display:block;margin:15px 0;color:#404040}</style>
<!--[if lt IE 9]><script src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7/html5shiv.min.js"></script><![endif]-->
<link rel="icon" href="/favicon.ico" type="image/x-icon" />
<link rel="shortcut icon" href="/favicon.ico" type="image/x-icon" />
</head>
<body>
<div id="body-size">
<div id="border">
<h1>Le site TrucMucheMachin est en maintenance…</h1>
</div>
<div class="content">
<h2>Pause, on recharge les batteries…</h2>
<div class="text">
<p class="note">Bonjour,<br />Nous travaillons actuellement à l'amélioration du site internet de TrucMucheMachin, afin de vous rendre sa viste plus agréable et plus facile.</p>
<p class="note">Nous serons de retour dans un mois environ.</p>
</div>
<div class="designinfo">Copyright © <?php echo date('Y'); ?> - TrucMucheMachin</div>
</div>
</div>
</body>
</html>
<?php ob_end_flush(); ?>

Cette page doit être nommée index.php. Elle permet d'avertir les visiteurs du problème, sans conséquence sur le référencement de votre site.

Vous pouvez bien entendu modifier cette page (notamment le nom « TrucMucheMachin » ;-) !), mais veillez à conserver le code situé au-dessus du doctype <!DOCTYPE html> car c'est cette portion de code PHP qui informe les visiteurs et les robots. la directive header('Retry-After: <nombre de seconde>'); permet de donner une indication approximative du temps pendant lequel le service sera indisponible.

Il faut maintenant rediriger les requêtes provenant de liens externes à votre site, afin que le visiteur soit informé de l'indisponibilité temporaire de celui-ci. Les directive Rewrite étant interdites chez Free ; il faut ruser, et contourner le problème en renvoyant les requêtes erronées vers la page de maintenance, ce qui sera automatique si le contenu de l'espace web (ou du répertoire sujet à modification) est vide. Pour cela, il faut insérer le code suivant dans le fichier .htaccess situé à la racine de votre compte (ou dans le répertoire en maintenance) :

php 1
Options -Indexes
AddDefaultCharset utf-8
ErrorDocument 404 index.php

Vous pouvez également rediriger individuellement les URL de votre site qui sont sujettes à maintenance via les directives Redirect et RedirectMatch et le code de redirection temporaire 307 (vous pouvez, dans ce cas, nommez votre page de maintenance comme bon vous semble) :

Redirect 307 /la-page-en-maintenance http://monsite.free.fr/maintenance.php
RedirectMatch 307 ^/page-([0-9]+).shtml$ /maintenance.php

La page de maintenance, ainsi que le fichier .htaccess correspondant, sont disponibles au téléchargement depuis notre site, ⬇︎ ici.