Magazine Photos

Erreurs 404 : faites la chasse aux pages perdues

Par Daxlebo
Source http://www.bicolline.com/in_chasses_aux_trolls_ac.html

Je suis tombé récemment sur plusieurs articles recensant les pages 404 les plus originales, créatives ou informatives. Bien que l’intention soit louable, j’ai tendance à penser que la meilleure page 404, c’est celle qu’on ne voit jamais ! Mais pour éradiquer les pages perdues, il faut d’abord les identifier. Voici une manière simple de procéder avec PHP.

Source http://www.bicolline.com/in_chasses_aux_trolls_ac.html

Je suis tombé récemment sur plusieurs articles recensant les pages 404 les plus originales, créatives ou informatives. Bien que l’intention soit louable, j’ai tendance à penser que la meilleure page 404, c’est celle qu’on ne voit jamais ! Mais pour éradiquer les pages perdues, il faut d’abord les identifier. Voici une manière simple de procéder avec PHP.

Votre 404 sur mesure

La première étape consiste à signifier à votre serveur qu’il doit rediriger le visiteur vers un script personnalisé lorsqu’une erreur 404 survient. Sur un serveur mutualisé, il faudra généralement éditer les options de votre hébergement. Si vous avez la possibilité d’éditer les fichiers .htaccess (suivez ce lien si vous ne savez pas comment créer un fichier .htaccess), il vous suffit d’insérer la ligne suivant dans le .htaccess situé à la racine du site :

ErrorDocument 404 /404.php

Vous remplacerez /404.php par le nom de votre script, mais veillez à ce qu’il puisse être interprété par PHP.

Que mettre dans mon script ?

Le script aura deux fonctions : annoncer au visiteur qu’il s’est planté (je vous renvoie pour ce faire aux exemples de pages 404 remarquables en lien plus haut), et surtout, avertir l’administrateur du site qu’une erreur vient de se produire. J’ai une préférence pour les alertes par e-mail qui attirent l’attention rapidement, mais vous pouvez préférer un fichier log en mode texte ou une insertion dans une base de données, ou encore un cumul des deux. Je me concentrerai sur l’e-mail pour cette introduction.

Pour identifier l’erreur et sa cause, on veut connaître l’adresse de la page qui était demandée, et si possible l’adresse de provenance du visiteur. Si en plus, on peut avoir l’ip du visiteur et l’heure de la requête sur le serveur, on pourra corréler les données avec les logs de consultation pour les cas les plus difficiles. On se servira pour ce faire du tableau de variables global $_SERVER qui contient toutes ces infos. Voici les trois variables qui nous rendront le plus de services :

  • $_SERVER['REQUEST_URI'] : l’url de la page demandée, et qui a causé une erreur 404.
  • $_SERVER['HTTP_REFERER'] : l’url de la page de provenance (referer) du visiteur, quand elle est connue. Dans le cas où le visiteur a saisi à la main une adresse erronée , cette variable sera vide.
  • $_SERVER['REMOTE_ADDR'] : l’adresse IP du visiteur

Envoyer le tout par e-mail

Il ne reste plus qu’à envoyer le message à l’adresse e-mail de votre choix dès que le visiteur consulte la page 404.php. Le script pourra ressembler à ça :

<?php
$email_admin = "[email protected]";

$monsite = "lepotlatch.org" ; // utile si vous administrez plusieurs sites

$message_titre = "[Erreur 404 " . $monsite . "] " . $_SERVER['REDIRECT_URI'] ;

$message_corps = "Erreur 404 sur le site " . $monsite . ".\r\n" .
"Une page demandée n’a pas été trouvée. \r\n" .
"Url de la page : " . $_SERVER['REQUEST _URI'] . "\r\n" .
"Url de provenance : " . $_SERVER['HTTP_REFERER'] . "\r\n" .
"IP du visiteur : " . $_SERVER['REMOTE_ADDR'] . "\r\n" .
"Navigateur : " . $_SERVER['HTTP_USER_AGENT'] . "\r\n" .
"Heure de la requête : " . date('d/m/Y G:i:s') . "\r\n" .
"Contenu brut du tableau global $_SERVER : " . print_r($_SERVER,true)  ;

// Envoi du message
mail($email_admin, $message_titre, $message_corps) ;

// Ci-dessous, affichez votre page 404 sur mesure pour le visiteur.
?>

Eliminer les erreurs

Une fois le script mis en place, vous recevrez (le moins souvent possible, je l’espère) des avertissements sur des URL qui n’existent pas sur votre site. En général, il y a trois scénarios, et trois manières de les traiter :

  • Cas 1 : le lien est obsolète ou mal orthographié sur une page de provenance unique. Si la page d’origine fait partie de votre site, il vous suffit de corriger le lien manuellement. Si elle est hébergée sur un site partenaire, le plus simple est de contacter le webmestre du site pour lui demander de mettre à jour ses liens.
  • Cas 2 : le lien est obsolète ou mal orthographié sur un grand nombre de pages de provenance. Si les liens sont sur votre site, mais qu’il n’est pas possible d’automatiser le remplacement de tous les liens erronés, ou s’il est situé sur des sites externes nombreux ou inaccessibles, il faut trouver une autre solution. Ma préférence : la redirection permanente. Elle peut se faire au niveau du .htaccess ou en recréant un fichier PHP à l’url précédemment recherchée.
  • Exemple avec .htaccess
    Redirect permanent /ancienne_url.html http://www.monsite.org/nouvelle_url
    
    Exemple de script ancienne_url.php
    <?php
    header("Status: 301 Moved Permanently", false, 301);
    header("Location: http://www.monsite.org/nouvelle_url");
    exit();
    ?>
  • Cas 3 : le lien pointe vers une page définitivement supprimée. Dans ce cas l’erreur 404 est normale et parfois même souhaitable. Pour faire disparaître les pages en question des moteurs de recherche qui continueraient de les indexer, une mention dans robots.txt (suivez ce lien pour savoir comment utiliser le fichier robots.txt) peut être utile.
  • Exemple de fichier robots.txt
    User-Agent: *
    Disallow: /repertoire/ancienne_page.html
    

    Conclusion

    Cette méthode permet d’avoir en permanence un œil sur les impasses de votre site. Elle ne pourra pas empêcher le drame avant qu'il survienne, mais si vous exercez un suivi scrupuleux, vous devriez minimiser le nombre d'erreurs 404 qui passent entre les filets. Il y a probablement des raffinements possibles, notamment quand le nombre d’alertes devient trop nombreux parce que des robots indexeurs des moteurs de recherche « inventent » des URL fictives à foison : un filtrage par navigateur (HTTP_USER_AGENT) fera généralement l'affaire.


Retour à La Une de Logo Paperblog

A propos de l’auteur


Daxlebo 16 partages Voir son profil
Voir son blog

l'auteur n'a pas encore renseigné son compte l'auteur n'a pas encore renseigné son compte

Magazine