Avant toute chose, qu'est-ce qu'une erreur HTTP ... ? Exemple simple : que faire si un internaute tente de visiter une page de votre site, mais que cette page a été supprimée ? Le protocole HTTP est utilisé pour le transfert de fichiers sur internet (pages HTML par exemple) localisés grâce à une chaîne de caractères (appelée URL). Lorsqu'un internaute tente d'accéder à un fichier, il envoie une requête au serveur (hébergeant le fichier) :
Si tout se déroule bien, la page ou le fichier sont renvoyés au navigateur. Dans le cas contraire, le serveur renvoie un code de réponse, constitué de trois chiffres. Plutôt que de s'attarder sur le fonctionnement des echanges, qui n'a pas grand intérêt pour la conception d'un site, nous nous intéresserons ici à la gestion de ces erreurs.
La gestion des erreurs HTTP |
![]() |
Sur Apache, la manière la plus simple de gérer ces erreurs est d'utiliser un fichier .htaccess . Simple et rapide à mettre en place... un seul fichier permet de gérer les principales erreurs que vous pourrez rencontrer. Exemple simple : que se passe-t-il si un internaute tente de visiter une page de votre site, mais que cette page a été supprimée ?
Le serveur va renvoyer l'erreur "introuvable". Le code de cette erreur est 404 (les codes des erreurs seront étudiés ci-dessous). On va donc demander au serveur de rediriger l'internaute vers une autre page : pour commencer, créez un fichier texte et nommez le .htaccess. Insérez y cette simple ligne :
ErrorDocument 404 /erreur.php |
Enregistrez ce fichier et placez le à la racine de votre site. A chaque erreur 404 , les internautes seront redirigés vers la page /erreur.php. Bien sûr, créer une simple page "erreur" n'est pas la meilleure solution ! A titre personnel, je vous conseille de rediriger les internautes vers la page d'accueil (ou mieux la page d'accueil de la rubrique concernée le cas echéant) en passant une variable à cette page, qui indiquera qu'il y a eu une erreur :
ErrorDocument 404 /index.php?erreur=404 ErrorDocument 403 /index.php?erreur=403 ErrorDocument 401 /index.php?erreur=401 |
Cette fois ci, à chaque erreur 401, 403 ou 404, l'internaute sera redirigé vers la page d'accueil (index.php) à laquelle on passe la variable "erreur", indiquant l'erreur retournée. Il n'y a plus qu'à traiter l'erreur par script, en utilisant par exemple PHP :
<?PHP if ($erreur == "404") { // si erreur
404 ?> /* Bien sûr, l'intérêt de repérer
les erreurs ne s'arrête pas à avertir le visiteur (qui de
toute façon l'aurait bien remarqué) : le but principal est
d'être averti soi-même de cette erreur (en tenant des stats,
pourquoi pas dans une base de données) afin de pouvoir y remédier
! /* Si par exemple une page est manquante, il faut soit la remettre en place, soit récupérer l'URL de la page qui redirige vers cette page manquante pour en supprimer le lien. Dans ce cas, utilisez ce code : */ <?PHP if ($erreur!="") { // si il y a une
erreur (variable erreur non vide) // On décide d'envoyer cette erreur par
mail : on prépare donc le contenu : mail("mail@site.com","$date : erreur $erreur",$contenu_mail,"From:erreurs@$erreur.site"); ?> |
Remarque : chaque répertoire / sous répertoire peut contenir son propre fichier htaccess, et donc gérer différemment les erreurs.
Les codes d'erreur HTTP |
![]() |
- 20x : Réussite : ces codes indiquent
le bon déroulement de l'opération - 30x : Redirection : ces codes indiquent que la ressource n'est plus à l'emplacement indiqué - 40x : Erreur dûe au client : ces codes indiquent que la requête est incorrecte - 50x : Erreur dûe au serveur : ces codes indiquent qu'il y a eu une erreur interne du serveur |