[CODE] Traquer ses erreurs 404

404
Les liens morts sont une des plus grandes peur du développeur web et un cauchemar pour les utilisateurs qui s’attendaient à trouver une page intéressante et qui se voient barrer la route par une page d’erreur. Il est donc nécessaire de posséder le moins possible, et idéalement aucun, liens morts sur son site.

Il est néanmoins impossible de pouvoir vérifier manuellement tous les liens présents, ce qui serait un travail long et pénible. Il existe actuellement des solutions payantes permettant d’identifier les liens morts sur notre site, mais pourquoi payer pour un tel service ? Comment pouvons nous être avertis de la présence de liens morts ? Comment pouvons nous corriger ces liens morts ?

Mettre en place une page d’erreur 404

Afin de pouvoir traquer nos erreurs 404, il est nécessaire de posséder notre propre page d’erreur qui remplacera celle par défaut du navigateur de l’utilisateur. En créant cette page nous même, nous pouvons choisir le contenu de celle-ci et en tirer parti pour résoudre les erreurs de notre site. Les pages 404 sont en général quelque chose de particulier dans un site et il existe une certaine coutume qui incite les développeurs à faire de ces pages d’erreurs des pages originales. Je vous invite à visiter le site www.bonjour404.fr qui propose chaque jour une page 404 originale qui peut être une source d’inspiration pour la votre.

Notre redirection se fait dans notre fichier .htaccess que l’on place à la racine de notre site. Il vous suffit de rajouter cette ligne :

ErrorDocument 404 /404.php

Si la page renvoie un code d’erreur 404, vous serez redirigé vers la page 404.php. A noter que vous pouvez faire une seule page d’erreur et la découper en plusieurs parties, selon les différents types d’erreurs :

ErrorDocument 404 /error.php?erreur=404
ErrorDocument 403 /error.php?erreur=403
ErrorDocument 500 /error.php?erreur=500

Une fois ceci rajouté dans votre .htaccess, il vous faudra donc créer la page d’erreur associée au code d’erreur 404.

Notre page d’erreur 404

Je vous laisse libre pour la présentation de votre page ; je vous invite à faire quelque chose d’original (pourquoi pas rigolo !) et qui permet de revenir au contenu de votre site (accueil / recherche… N’oubliez pas les liens !)

Afin d’être averti lorsque notre utilisateur atterri sur cette page, il va falloir créer un système de notification qui nous informe sur la provenance du visiteur, la page qu’il a demandé et d’autres petites informations. Nous allons pour cela nous envoyer un email à nous même qui contiendra toutes les informations nécessaires pour un traitement de l’erreur. Je détaillerai un petit peu plus loin les filtres à mettre en place pour éviter que votre boite mail soit rempli de mails de notifications d’erreurs 404 sur vos sites.

Voici donc le code à rajouter dans votre fichier 404.php, n’oubliez pas de changer l’adresse email ! Si vous voulez plus d’informations sur les variables $_SERVER, je vous renvoie à la documentation PHP.

$domaine = $_SERVER['HTTP_HOST'];
$HTTP_REFERER = $_SERVER['HTTP_REFERER'];
$SCRIPT_URI = $_SERVER['REQUEST_URI'];
$REMOTE_ADDR = $_SERVER['REMOTE_ADDR'];
$HTTP_USER_AGENT = $_SERVER['HTTP_USER_AGENT'];

$destinataire = "votre_email@votre_domaine.com"; // N'oubliez pas de changer cette adresse !
$sujet = "ERREUR 404 - ".$domaine." - ".$SCRIPT_URI.""; // Ce format nous sera utile pour traiter les emails

if(empty($HTTP_REFERER))
	{
	$provenance = "Pas de lien intermédiaire, connexion directe";
	}
	else
	{
	$provenance = $HTTP_REFERER;
	}
$message="
Une erreur 404 s'est produite sur le site ".$domaine.".
Provenance : ".$provenance."
Page : <strong>".$SCRIPT_URI."</strong>
Navigateur : ".$HTTP_USER_AGENT."
Adresse IP : ".$REMOTE_ADDR."
Nom de domaine : ".gethostbyaddr($REMOTE_ADDR)."";
mail($destinataire,$sujet,$message,$headers);

Le code se passe de commentaires, il utilise les variables serveur pour nous en dire plus sur l’erreur rencontrée. J’attire votre attention sur le champ sujet qui se compose de la manière suivante : "ERREUR 404 - domaine - url demandée" qui nous sera utile pour le traitement de nos emails.

Le traitement des emails de notification

Afin de ne pas remplir votre boite mail d’emails de notification d’erreurs 404 (qui ne sont pas très intéressants à lire !), je vais vous détailler comme les filtrer et les regrouper pour traiter rapidement les différentes erreurs que vous pourriez rencontrer.

La manipulation se fait ici sous Gmail, si vous ne l’utilisez pas encore, je vous le conseille vivement.

  1. Créez un nouveau filtre
  2. Filtrez avec le champ sujet et entrez : « ERREUR 404″
  3. Cochez l’option « Passer la boîte de réception (Archiver) »
  4. Créez un nouveau libellé que vous appellerez  »404″
  5. Cochez l’option « Ne jamais envoyer dans le dossier Spam »
Grâce à cette manipulation, vous ne recevrez pas de notifications quand vous recevrez des emails d’erreurs 404 et vous les retrouverez dans un dossier spécifique grâce au système de libellé automatique.
Voici ce que ça donne au final :

Grâce au système de conversations de Gmail, vos emails seront regroupés par sites et par page demandée qui a provoqué une erreur 404. Vous évitez ainsi la multiplication d’emails pour une même erreur et vous pouvez voir rapidement quelle page sur quel domaine a provoqué une erreur 404.

Il ne vous reste plus qu’à corriger celle-ci en modifiant votre code ou en mettant en place des redirections 301 dans votre .htaccess ! Bon débuggage à tous !

Les commentaires sont fermés.