[TUTORIEL] Page Erreur personnalisée (404, 501, ...)

Vous créez ou partagez un tutorial, postez-le ici !
Répondre
Auteur du sujet
CowBoy

[TUTORIEL] Page Erreur personnalisée (404, 501, ...)

Message par CowBoy »

Salut,


Lorsque vous tapez une mauvaise URL (comme celle ci par exemple : invrebteb.php ) , vous arrivez vers une page d'erreur (404 dans ce cas) moche et qui fait même parfois fuir vos visiteurs ...

Je vais donc vous expliquer comment créer vos propres erreurs.

SOMMAIRE :
  • I.) Liste des erreurs et leurs significations
  • [b]
  • II.) Un fichier .htaccess
  • [/b] [b]
  • III.) Une page erreur.php
  • [/b]
I.) Liste des erreurs et leurs significations
Voilà la liste avec leur signification de chaque erreur :

400 : Échec de l'analyse HTTP
401 : mauvais pseudo/mdp dans le .htaccess
402 : Le client doit reformuler sa demande avec les bonnes données de paiement.
403 : Requête interdite
404 : Page non trouvée
405 : Méthode non autorisée
500 : Erreur interne au serveur ou serveur saturé
501 : Le serveur ne supporte pas le service demandé
502 : Mauvaise passerelle
503 : Service indisponible
504 : Trop de temps à la réponse
505 : Version HTTP non supportée

Bon ... inutile de vous précisé que l'erreur la plus connu est l'erreur 404. Mais même si les autres ne vous servirons peut être jamais, mieux vaut tous les mettre, vous perdrez rien :mrgreen:

II.) Un fichier .htaccess
Pour ce faire, il vous faut déjà créer un fichier ".htaccess". Donc sous windows, c'est souvent pas possible de le créer, donc vous pouvez pour le moment créer un fichier qui se nomme "htaccess.txt".
A l'intérieur de ce fichier, il va falloir préciser que lorsque il y a une erreur (404 ou autre), que le serveur aille ouvrir un fichier. Pour cela, voila ce qui faut faire :

Code : Tout sélectionner

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
[j][alinea]Bon, là, j'ai choisis à chaque fois le même fichier (même si ça ne sera pas le même texte). Vous pouvez très bien modifier le nom de votre page de votre choix en modifiant ceci : "erreur.php?erreur=401". Exemple :[/alinea][/j]

Code : Tout sélectionner

ErrorDocument 404 /page404.php
Bref, c'est à vous de choisir ;) . Ensuite, vous héberger votre fichier sur votre site, et n'oubliez pas de modifier le nom de fichier en : ".htaccess".

III.) Une page erreur.php
Bon, là j'ai choisis "erreur.php" dans le ".htaccess", mais si vous avez choisis différent, à vous de choisir ;) . Donc on crée notre page :

Code : Tout sélectionner

<p>Une erreur s'est produite :</p><br/><br/><br/>
<?php
switch($_GET['erreur']){
   case '400':
   echo 'Echec de l\'analyse HTTP';
   break;
   case '401':
   echo 'Le pseudo et/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 n\'existe 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 !!';
}
?>
Et voila, vous l'héberger, et le tour est joué ;) . Mais bon ... rien ne vous empêches de rajouter du HTML au dessus et en dessous de ce code, car là, c'est aussi moche qu'au départ :mrgreen: .


Amusez-vous bien 8-)


@++
CowBoy
Auteur du sujet
Machinchose

Message par Machinchose »

Salut à tous,

Le navigateur, quand c'est un bon navigateur, comme Maxthon, par exemple, peut très bien remplacer la page d'erreur.

Mais, ceci dit, sinon, elle est sur le site lui-même, quand c'est un bon site, comme le mien ou, elle peut être fournie par le FAI via un renvoi DNS.

Le truc de Cowboy s'adresse donc à un seul cas de figure : lorsque le site existe mais pas la page qu'on demande.

A noter qu'on peut aussi créer une redirection dans le .htaccess (ou en html si le serveur est sous Windows) pour renvoyer vers un sous-domaine ou autre si on ne veut pas qu'on puisse accèder directement au répertoire indiqué en lieu et place de la page d'erreur qui n'est jamais agréable. (tiens, j'y avais jamais pensé...faudra que j'essaie, j'ai justement le problème...)... :mrgreen:

EDIT : Je confirme, mon idée marche aussi très bien....je m'explique, sur mon forum j'avais des tas de robots qui tentaient de s'inscrire, des machins intelligents capables de passer le captcha. Seulement ils le faisaient via /forum en lieu et place du sous-domaine forum.XXXX.com (ben ouais, j'ai pas de site web, comme je le dis dans mon profil, alors je mets des X), ce qui fait que je devais systématiquement me logger et me relogger pour supprimer le nouvel inscrit puisque le cookie de session n'était plus dans son domaine d'activité. Alors, j'ai mis ce code dans le htaccess :

Code : Tout sélectionner

RedirectPermanent /phpBB3 /error/301-moved_permanently.html
RedirectPermanent /forum /error/301-moved_permanently.html
De la sorte, si on essaie de s'introduire via le répertoire qui n'existe plus, au lieu d'être renvoyé, comme jusqu'à présent, dans le nouveau répertoire, hop! page d'erreur...(moche, en plus). De même, même en allant via le bon répertoire....hop! Page d'erreur...(la même, toute aussi moche)... :mrgreen:

Le rapport avec le fil de Cowboy? ....Ben...l'utilisation de la page d'erreur qu'on peut rendre belle si on veut et sur laquelle on pourrait même mettre un lien vers la bonne page (mais bon, si on veut, hein, parce que moi je veux pas, et pis, d'abord, j'ai pas de site web...)... :mrgreen:
Avatar du membre
zikouf
Petit Nouveau
Petit Nouveau
Messages : 5
Enregistré le : il y a 14 ans

Message par zikouf »

Il y a aussi le problème de l'hébergeur qui peux se permettre de choisir ces pages d'erreur.

Mais sinon merci beaucoup, c'est très utile
Zikouf <==> N.O.S
Auteur du sujet
Machinchose

Message par Machinchose »

Généralement, c'est le cas, mais si ça n'est pas explicitement spécifié dans le contrat (par exemple dans le cas d'un hébergement gratuit ou proposant un service particulier à des conditions particulièrement avantageuses et financé par la pub sur les pages d'erreurs) on est chez nous sur notre hébergement.

L'hébergeur n'a donc pas son mot à dire. En fait, c'est celui qui détient le contrôle sur le .htaccess qui peut tout. Parce que même si l'hébergeur a placé ses pages d'erreur dans un répertoire au-dessus de la racine et donc inaccessible, rien ne nous empêche de modifier le .htaccess pour renvoyer vers un nouveau répertoire crée par nous et dans lequel on pourra mettre n'importe quoi.

A noter, c'est aussi dans le sujet, et, justement, puisque j'en parle, une page d'erreur, on l'a vu, est une page html comme une autre. A partir de là, on peut fort bien vendre l'espace pour de la publicité. Si on a un site bien achalandé, la page peut valoir cher, très cher même. Certains sites vont jusqu'à organiser les erreurs afin qu'on tombe sur la pub. Un simple lien qui renvoie vers la bonne adresse dans la page pour éviter de perdre le visiteur et c'est tout bénéf.... ;)
Auteur du sujet
CowBoy

Message par CowBoy »

Content que ça vous plaise.

J'essayerai ce que tu m'as proposé Machinchose ;)


Merci ;)
@++
CowBoy
Avatar du membre
mArTi
Privilégié
Privilégié
Messages : 34
Enregistré le : il y a 14 ans

Message par mArTi »

http://www.shibumi.org/eoti.htm
La meilleure page personnalisée :mrgreen:
Répondre

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 19 invités