.htaccess et pages d’erreur personnaliséespar Robert Sebille - publie_le 26 novembre 2004Vous pouvez rediriger les erreurs de vos visiteurs vers des pages de votre choix. voici comment faire :
Comment faire simple ?Dans cette configuration, seule l’erreur http 404 (page non touvée) est redirigée vers votre page d’erreur personnalisée. Les autres erreurs sont redirigée vers la page par défaut. L’erreur 404 est en général la plus fréquente.
# ErrorDocument ErrorDocument 404 http://mon_site/ma_page_d_erreur.html
Tout le html que vous voulez. Par exemple : <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr"> <head> <meta name="ROBOTS" content="NOINDEX, NOFOLLOW"> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <meta name="GENERATOR" content="Mozilla/4.61 [en] (X11; I; Linux 2.2.9-23mdk i686) [Netscape]" /> <meta name="author" content="" /> <title>Erreur !</title> </head> <body> <h1>Page non trouvée</h1> Erreur 404 </body> </html> Comment faire sophistiqué (avec php et javascript) ?Ici, vous devez absolument créer une page php, par exemple : ma_page_d_erreur.php (et non ma_page_d_erreur.html). Seront traitées les erreurs http 204, 401, 403, 404, 408, 410, 500, 502, 503 et 504. Vous pouvez voir la signification de ces erreurs dans le contenu ci-dessous de ma_page_d_erreur.php ou découvrir la liste des codes d’erreur http et leur description au bas de cette page.
Attention : pour des raisons techniques, ErrorDocument 401 DOIT rediriger vers une ressource locale et non une URL absolue ! # ErrorDocument ErrorDocument 204 http://mon_site/ma_page_d_erreur.php?error=204 ErrorDocument 401 /ma_page_d_erreur.php?error=401 ErrorDocument 403 http://mon_site/ma_page_d_erreur.php?error=403 ErrorDocument 404 http://mon_site/ma_page_d_erreur.php?error=404 ErrorDocument 408 http://mon_site/ma_page_d_erreur.php?error=408 ErrorDocument 410 http://mon_site/ma_page_d_erreur.php?error=410 ErrorDocument 500 http://mon_site/ma_page_d_erreur.php?error=500 ErrorDocument 502 http://mon_site/ma_page_d_erreur.php?error=502 ErrorDocument 503 http://mon_site/ma_page_d_erreur.php?error=503 ErrorDocument 504 http://mon_site/ma_page_d_erreur.php?error=504
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr"> <head> <meta name="ROBOTS" content="NOINDEX, NOFOLLOW"> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <meta name="GENERATOR" content="Mozilla/4.61 [en] (X11; I; Linux 2.2.9-23mdk i686) [Netscape]" /> <meta name="author" content="" /> <title>Erreur !</title> </head> <body> <!-- Tout le html que vous voulez. Par exemple: --> <h1>Ooops !</h1> <!-- Affichage du contenu de l'erreur: --> <?php // Frequently HTTP errors (4xx client / 5xx server) // Redirect from .htaccess if (isset($_GET['error'])) { $erreur = $_GET['error']; switch ($erreur) { case 204 : echo "<h3>Ce répertoire n'a pas de contenu</h3>"; echo "<h4>[code 204]</h4>"; break; case 400 : echo "<h3>Votre requête est mal formulée</h3>"; echo "<h4>[erreur 400]</h4>"; break; case 401 : echo "<h3>Votre requête nécessite une identification de l'utilisateur</h3>"; echo "<h4>[erreur 401]</h4>"; break; case 403 : echo "<h3>L'accès à cette page est interdit</h3>"; echo "<h4>[erreur 403]</h4>"; break; case 404 : echo "<h3>La page que vous cherchez n'existe pas</h3>"; echo "<h4>[erreur 404]</h4>"; break; case 408 : echo "<h3>Votre requête est hors-délai et le serveur a abandonné la connexion</h3>"; echo "<h4>[erreur 408]</h4>"; break; case 410 : echo "<h3>L'adresse que vous demandez n'existe plus et a été définitivement supprimée du serveur</h3>"; echo "<h4>[erreur 410]</h4>"; break; case 500 : echo "<h3>Erreur interne du serveur HTTP</h3>"; echo "<h4>[erreur 500]</h4>"; break; case 502 : echo "<h3>Le serveur intermédiaire (passerelle ou proxy) a fourni une réponse invalide</h3>"; echo "<h4>[erreur 502]</h4>"; break; case 503 : echo "<h3>Service indisponible en raison d'une surcharge temporaire ou d'une opération de maintenance</h3>"; echo "<h4>[erreur 503]</h4>"; break; case 504 : echo "<h3>Un intermédiaire (passerelle ou proxy) a mis trop longtemps à répondre</h3>"; echo "<h4>[erreur 504]</h4>"; break; default : echo "<h3>Erreur non-identifiée.</h3>"; } } else { echo "<h3>Pas d'erreur.</h3>"; echo "<h4>Vous avez probablement demandé cette page directement.</h4>"; } ?> <!-- Affichage d'un lien vers la page de départ si javascript est activé: --> <script language="JavaScript" type="text/javascript"> document.write("<div>\n<hr />\nSi vous voulez retourner d'où vous venez, "); document.write("<a href='javascript:history.back();'> Cliquez ici </a></div>"); </script> <noscript> <hr> <div class="petit">Javascript n'est pas activé dans votre navigateur. La fonction "Retour à la page précédente" n'est pas disponible.</div> <div>Utilisez le bouton "Précédent" de votre navigateur si vous voulez retourner d'où vous venez.</div> </noscript> <!-- Rebelotte, tout le html que vous voulez ;-). Par exemple: --> <div>Désolé !</div> </body> </html> Et voilà. vous pouvez tester votre page d’erreur php en entrant http://mon_site/ma_page_d_erreur.php?error=404 (ou n’importe quel n° d’erreur). Pas vraiment compliqué, n’est-ce pas ?
redacteur_spip:
Robert
liste des sujets - 2 sujet(s)
et 4 contribution(s) au total dans ce forum.
.htaccess et pages d’erreur personnalisées [1/2] 12 avril 2007 .htaccess et pages d’erreur personnalisées [2/2] 3 avril 2007, par Kenshin |
|
|
Tous les textes de ce site sont utilisables et reproductibles sous les termes de la licence OpenContent 1.0 [traduction française] - Copyleft: Banlieues + le nom de l'auteur si il existe..
|
|