TUTORIELS 
Le fichier .htaccess (2) : gestion des erreurs HTTP
Gérer un site signifie aussi faire en sorte qu'un visiteur ne tombe jamais sur une page "morte" : redirections et gestion d'erreurs sont là pour aider le webmaster.  (1er octobre 2003)
 
Discutez en sur les forums
La gestion des codes d'erreurs HTTP peut se révéler cruciale dès que l'on a à gérer un site large et changeant : à partir du moment où une page est déplacée sans être remplacée par un avertissement de ce changement, tout visiteur peut se voir présenter la fameuse erreur 404 (page introuvable), et donc ne plus revenir sur votre site.
.htaccess vous permet de gérer ses erreurs avec élégance, et même de mettre à jour automatiquement les moteurs de recherche intelligents : nous abordons aujourd'hui la redirection d'URL.


Les erreurs
Nous ne vous ferons pas ici un cours complet sur les erreurs du protocole HTTP, ce que la suite de chiffres signifie ou leurs origines: voici simplement les principaux codes à gérer pour un client HTTP (et donc, ceux que vous devez vous préparer à rencontrer), ainsi que les actions possibles si votre visiteur tombe sur l'une d'elle.

Les principales erreurs HTTP
code de l'erreur
signification
action à prendre coté serveur
301
Fichier déplacé de manière permanente
Renvoyer vers la nouvelle page (ou un page intermédiaire expliquant que le visiteur doit mettre à jour ses bookmarks)
302
Fichier déplacé de manière temporaire
Renvoyer vers la nouvelle page
400
Mauvaise requête
Renvoyer vers une explication que la requête est mal formée, ou vers l'accueil du site
401
Non autorisé
Renvoyer vers la page de connexion (login)
402
Paiement requis
Renvoyer vers la page de paiement
403
Interdit
Renvoyer vers une page expliquant pourquoi on n'a pas accès à ce fichier/dossier
404 Introuvable Renvoyer vers une page d'explication, ou vers l'accueil
410 Effacé Renvoyer vers l'accueil
500
Erreur serveur
Renvoyer vers une page d'explication, ou vers l'accueil

mod_alias
Ce module, "cousin" de mod_rewrite, permet de dire au navigateur de relancer la requête en utilisant une nouvelle adresse, qui lui est indiqué. Cela permet entre autres de gérer les erreurs de manière totalement transparente pour le visiteur. Nous verrons plus précisément Alias dans un prochain article de notre série sur .htaccess.
La syntaxe pour gérer les redirections et les erreurs est extrêmement simple.
Si on veut rediriger une page précise :

Redirect /about /societe/apropos
Redirect /lapins/bugsbunny.htm /lapins/texavery/bugs/

Dans la première requête, http://monsite.com/about/xavier-bio.asp renverra, de manière transparente pour le visiteur, vers http://monsite.com/societe/apropos/xavier-bio.asp. Le moteur de redirection a enfin pris simplement la partie de l'URL qui correspondait à la redirection, et l'a remplacée par la nouvelle adresse : les noms de fichier sont donc conservés.
Cette redirection est temporaire (code 302). On peut modifier le code renvoyé au navigateur en ajoutant le code souhaité dans la directive :

Redirect 301 /projets/sitephoto http://www.monsitephoto.com

Nous indiquons ainsi que l'adresse définitive est désormais un site à part plutôt qu'un sous répertoire du site.

ErrorDocument
Au navigateur de décider de la démarche à suivre. Il devrait normalement suivre la nouvelle URL, et peut-être même, bien programmé, mettre à jour son bookmark... Idem pour un robot type Googlebot, qui mettra automatiquement à jour sa base.

Cela étant, il est plus lisible de passer directement par l'instruction ErrorDocument. En contrepartie, on ne peut pas l'appliquer à un seul fichier.

ErrorDocument 401 /forums/login.jsp
ErrorDocument 402 /membres/abonnement.cfml
ErrorDocument 403 "<body>Vous n'avez pas accès à cette section</body>
ErrorDocument 404 /
ErrorDocument 500 /erreurs/500.txt

Ainsi, dans le cas où l'utilisateur arriverait sur une erreur de type 401, il serait automatiquement renvoyé vers la page de connexion. S'il tombe sur un fichier non existant, il sera directement renvoyé vers la racine.

 
[ Xavier BorderieJDNet
 
Accueil | Haut de page