Je vais vous expliquer ici comment créer une page d'erreur personnalisée, comme celle du Site du Zéro.
Rendez-vous par exemple sur http://www.siteduzero.com/dkljd : ça va vous afficher une erreur 404. Ou quand le site est saturé, c'est une erreur 500.
C'est un truc assez court, mais bien pratique !
Matériel nécessaire :
des ciseaux ;
un crayon ;
de la colle ;
une gomme ;
un hébergeur acceptant le PHP et les .htaccess.
Créez maintenant un fichier .htaccess que vous placerez à la racine de votre site, et insérez-y ceci (en remplaçant bien sûr « http://www.siteduzero.com » par l'adresse de votre site web) :
ErrorDocument 400 http://www.siteduzero.com/400.php
ErrorDocument 401 http://www.siteduzero.com/401.php
ErrorDocument 402 http://www.siteduzero.com/402.php
ErrorDocument 403 http://www.siteduzero.com/403.php
ErrorDocument 404 http://www.siteduzero.com/404.php
ErrorDocument 405 http://www.siteduzero.com/405.php
ErrorDocument 500 http://www.siteduzero.com/500.php
ErrorDocument 501 http://www.siteduzero.com/501.php
ErrorDocument 502 http://www.siteduzero.com/502.php
ErrorDocument 503 http://www.siteduzero.com/503.php
ErrorDocument 504 http://www.siteduzero.com/504.php
ErrorDocument 505 http://www.siteduzero.com/505.php
C'est bien beau, les 400, 401, 402, 403, 404, 500… mais ça veut dire quoi ?
Maintenant, vous devez vous dire : « Je mets quoi dans 401.php ?… »
Vous y mettez ce que vous voulez.
Exemple pour 401.php : « Vous avez entré un mauvais pseudo ou mot de passe. »
Exemple pour 404.php : « Page non trouvée. »
Vous l'avez compris, les erreurs 400 sont des erreurs du client, et les 500 des erreurs du serveur ; je vous laisse mettre tout ça en forme ! :-°
Ainsi, avec les sites de référencement ayant un robot, comme Google ou MSN Search, il y a un léger problème : le moteur de recherche n'est pas en mesure de distinguer si la page est une page d'erreur ou non. Il affichera alors des liens vers des pages d'erreur lors d'une recherche.
ErrorDocument 400 /400.php
ErrorDocument 401 /401.php
ErrorDocument 402 /402.php
ErrorDocument 403 /403.php
ErrorDocument 404 /404.php
ErrorDocument 405 /405.php
ErrorDocument 500 /500.php
ErrorDocument 501 /501.php
ErrorDocument 502 /502.php
ErrorDocument 503 /503.php
ErrorDocument 504 /504.php
ErrorDocument 505 /505.php
Vous pouvez également écrire un petit message sans créer de nouvelle page, comme ceci :
ErrorDocument 400 "Échec de l'analyse HTTP."
ErrorDocument 401 "Mauvais pseudo ou mot de passe."
ErrorDocument 402 "Le client doit reformuler sa demande avec les bonnes données de paiement."
ErrorDocument 403 "…"
ErrorDocument 404 ""
ErrorDocument 405 ""
ErrorDocument 500 ""
ErrorDocument 501 ""
ErrorDocument 502 ""
ErrorDocument 503 ""
ErrorDocument 504 ""
ErrorDocument 505 ""
Vous l'aurez compris : vous devez inscrire le message d'erreur entre les guillemets.
Mais il est énervant de devoir créer une nouvelle page à chaque fois ! Eh bien, grâce à du PHP, vous pouvez n'en créer qu'une contenant toutes les erreurs ; regardez :
ErrorDocument 400 /erreur.php?erreur=400
ErrorDocument 401 /erreur.php?erreur=401
ErrorDocument 402 /erreur.php?erreur=402
ErrorDocument 403 /erreur.php?erreur=403
ErrorDocument 404 /erreur.php?erreur=404
ErrorDocument 405 /erreur.php?erreur=405
ErrorDocument 500 /erreur.php?erreur=500
ErrorDocument 501 /erreur.php?erreur=501
ErrorDocument 502 /erreur.php?erreur=502
ErrorDocument 503 /erreur.php?erreur=503
ErrorDocument 504 /erreur.php?erreur=504
ErrorDocument 505 /erreur.php?erreur=505
On va ensuite savoir quelle erreur afficher dans la page erreur.php grâce à la valeur du GETerreur.
<?php
switch($_GET['erreur'])
{
case '400':
echo 'Échec de l\'analyse HTTP.';
break;
case '401':
echo 'Le pseudo ou le mot de passe n\'est pas correct !';
break;
case '402':
echo 'Le client doit reformuler sa demande avec les bonnes données de paiement.';
break;
case '403':
echo 'Requête interdite !';
break;
case '404':
echo 'La page n\'existe pas ou plus !';
break;
case '405':
echo 'Méthode non autorisée.';
break;
case '500':
echo 'Erreur interne au serveur ou serveur saturé.';
break;
case '501':
echo 'Le serveur ne supporte pas le service demandé.';
break;
case '502':
echo 'Mauvaise passerelle.';
break;
case '503':
echo ' Service indisponible.';
break;
case '504':
echo 'Trop de temps à la réponse.';
break;
case '505':
echo 'Version HTTP non supportée.';
break;
default:
echo 'Erreur !';
}
?>