Fermer un site web avec erreur HTTP 410

 Publié le 25 janvier 2014, à 19:28, par Allaedine El Banna   4 commentaires
Rangé dans Mémos sur logiciels libres


Tout site web a une date de début de vie… mais peut également avoir une date de fin ; cela arrive par exemple lorsque le service qu’il rend aux utilisateurs n’est pas pertinent ou qu’il coûte trop de ressources à maintenir,

Si l’on trouvera sur Internet une quantité importante de pages pour démarrer son site web, on récupérera moins de contenu lorsqu’il s’agira de clotûrer une défunte application web. La fermeture d’un site web a deux objectifs :

  • notifier les utilisateurs légitimes (aussi bien que les scripts et autres bots !) que le service n’est plus (et non pas avec un code de retour HTTP 200 OK !),
  • informer les moteurs de recherche que le contenu devra être désindexé.

L’erreur HTTP 410 « Gone »

Dans la série des codes HTTP, le code 410 de la famille des « erreurs client » semble toute indiqué pour fermer un site : en effet, erreur plus précise que la (très célèbre) erreur 404, elle indique non seulement que la ressource est indisponible, mais cette fois, pour de bon.

Du point de vue de Google sur la question, il n’y a pas encore de différence de traitement : dans les deux cas, le contenu finira désindexé au bout d’une certaine période de temps. Cela dit, il peut sembler plus pertinent de réserver l’erreur 404 pour des fautes légitimes (faute d’orthographe dans une recherche, URL incorrecte), et de s’axer sur l’erreur 410 pour ce cas précis.

Provoquer une erreur 410 avec Apache2

La génération d’une erreur 410 avec Apache2 est une fonctionnalité de mod_alias. Dans le VirtualHost concerné, il suffira d’ajouter la simple ligne suivante :

<VirtualHost *:80>
    [...]
    Redirect gone /
    [...]
</VirtualHost>

Après un rechargement du serveur Apache2, on gagnera droit à la belle page de la collection des ErrorDocument par défaut :

Erreur HTTP 410 avec Apache2

Erreur HTTP 410 avec Apache2

Renvoyer une page d’avertissement en erreur 410 avec Apache2 et PHP5

Dans le cas d’un service très utilisé, il pourra être intéressant de ne pas renvoyer la page par défaut Apache2, mais du contenu HTML plus élaboré. Cependant, il ne sera pas possible avec la méthode vue plus haut de renvoyer une erreur 410 sur l’ensemble du site web et de placer une page d’avertissement au même endroit, car Apache2 ne pourra dès lors accéder à cette même page (du fait de l’erreur 410, vous me suivez ?).

On fera appel dans ce cas à PHP5, afin d’une part, de renvoyer l’erreur 410 dans les en-têtes HTTP en lieu et place d’Apache2, et d’autre part à mod_rewrite, afin de pouvoir renvoyer l’erreur 410 sur l’ensemble du site, tout en épargnant la page en question pour y laisser l’accès au serveur web. Cela donne dans le VirtualHost :

<VirtualHost *80>
[...]
    ErrorDocument 410 /fermeturedusite.php
    RewriteEngine on
    RewriteCond %{REQUEST_URI} !^/fermeturedusite\.php
    RewriteRule .* - [G]
[...]
</VirtualHost>

Pour la page PHP, on pourra se contenter d’un léger code pour la page fermeturedusite.php que l’on placera à la racine du DocumentRoot :

<?php
HEADER ("HTTP/1.1 410 Gone");
?>
<!DOCTYPE html>
<html lang="fr">
<head>
<title>Fermeture définitive du site www.tartifletteponey.com</title>
</head>
<body>
<h1>Fermeture définitive de Tartiflette Poney !</h1>
<p>Après 60 ans de bons et loyaux services, décision a été prise de fermer cet espace d'échanges malheureusement utilisé par un trop petit nombre. Nous aurons plaisir à vous retrouver sur :
</p>
<ul>
<li>le nouveau site web : <a href="http://www.tartifletteponey2.com/">www.tartifletteponey2.com</a></li>
<li>Facebook : <a href="http://www.facebook.com/tartifletteponey2">www.facebook.com/tartifletteponey2</a></li>
</ul>

<p>L'ensemble de l'équipe remercie les visiteurs qui avaient utilisé le service jusqu'à présent, et espère les revoir très vite sur ces nouveaux espaces !</p>
<p>-- Tartiflette Poney</p>
</body>
</html>

Ce qui nous donnera une page plus informative, mais toujours servie avec un code HTTP 410 :

Fermeture d'un site web avec Erreur 410 HTTP et page d'avertissement/redirection

Fermeture d’un site web avec Erreur 410 HTTP et page d’avertissement/redirection.


 Commentaires 4 commentaires

  • Eric dit :

    Je ne connaissait pas cette erreur et pourtant elle m’a l’air super utile. Il est certain qu’au prochain site que je ferme, j’utiliserais cette erreur. Merci pour cet article et bonne continuation dans le blogging !!

  • Yadel dit :

    Magnifique blog ! Continues ainsi et tu conquerras le monde !


  • Laisser un commentaire

    Votre adresse e-mail ne sera pas publiée. Les champs avec une astérisque (*) doivent être obligatoirement remplis.