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.
|