Page erreur 404 personnalisée en PHP
Lors de la réalisation d’un site web, il peut être intéressant d’implémenter sa propre page d’erreur 404.
Lorsqu’un utilisateur demande une page inexistante sur un site, le serveur HTTP retourne une erreur 404 dont le message est page non trouvée
. Soit pour un aspect esthétique, soit dans un but statistique[1], on peut être amené à créer sa page d’erreur HTTP personnalisée.
En prenant l’exemple de page écrites en PHP et exécutées sur le serveur HTTP Apache, il faut paramétrer le fichier .htaccess
et d’écrire une page nommée erreur.php
[2].
Il faut ajouter cette ligne dans le fichier .htaccess
:
ErrorDocument 404 http://www.mondomaine.com/erreur.php?code=404
La page erreur.php
doit contenir le code suivant[3] :
<html> <head> <title>Page d'erreur HTTP <?=code?></title> </head> <body> Vous venez de rencontrer une erreur HTTP <?=code?> pour la page <?=$REQUEST_URI?>. </body> </html>
Si l’utilisateur demande une page qui n’existe pas, il sera redirigé vers cette page. Par contre, la variable $REQUEST_URI
retourne la valeur /erreur.php
. Pour corriger ce problème et afficher correctement la page demandée et qui a provoqué l’erreur 404, il faut rectifier le fichier .htaccess
ainsi :
ErrorDocument 404 /erreur.php?code=404
Maintenant la page d’erreur affiche correctement le nom de page source de l’erreur 404.
Pour finir, on peut estimer qu’il n’est pas très propre de véhiculer le code d’erreur HTTP dans l’URL de la page d’erreur. Heureusement, une variable PHP permet de connaître le code d’erreur HTTP. En reprenant l’exemple depuis le début, il faut implémenter la gestion des erreurs de la façon suivante.
Le fichier .htaccess
se simplifie :
ErrorDocument 404 /erreur.php
Le fichier erreur.php
doit être modifié pour utiliser la variable $_SERVER["REDIRECT_STATUS"]
:
<html> <head> <title>Page d'erreur HTTP <?=$_SERVER["REDIRECT_STATUS"]?></title> </head> <body> Vous venez de rencontrer une erreur HTTP <?=$_SERVER["REDIRECT_STATUS"]?> pour la page <?=$REQUEST_URI?>. </body> </html>
Voici donc une méthode simple et efficace pour gérer les erreurs HTTP en PHP. Cet exemple n’est pas seulement valable pour les erreurs 404, mais pour toutes les erreurs HTTP telles que 401, 403, 500, …
Notes
[1] Ou pour surveiller ce qu’il se passe sur le site.
[2] Le nom choisi pour cette page est libre.
[3] Le code HTML est non-exhaustif car ce n’est pas le sujet de l’article.
https://blog.lecacheur.com/2006/04/03/page-erreur-404-personnalisee-en-php/DéveloppementHTTP,phpLors de la réalisation d'un site web, il peut être intéressant d'implémenter sa propre page d'erreur 404. Lorsqu'un utilisateur demande une page inexistante sur un site, le serveur HTTP retourne une erreur 404 dont le message est page non trouvée. Soit pour un aspect esthétique, soit dans un but statistique,...SeBSébastien LECACHEUR23r0@laposte.netAdministratorLe weblogue de SeB
chez moi sa marche pas.
j’ai tout bien fait, sa marche pas.
Ce tutorial est intéressant, mais il y a un petit problème d’affichage du code à utiliser. Je suis sous Firefox3 et le code dépasse sous la sidebar de droite et continu plus loin.
Cordialement.
Funnycat,
Je viens de corriger l’affichage de l’article. Merci de m’avoir signaler ce désagrément ! 😉