Site support de Banlieues

Image d'en-tête
 
 
 
 

Accueil du site    Support en ligne    Web    .htaccess et pages d’erreur personnalisées  
 
 
 
 
 
QCM
 
 
 
 

.htaccess et pages d’erreur personnalisées

par Robert Sebille - publie_le 26 novembre 2004

Vous pouvez rediriger les erreurs de vos visiteurs vers des pages de votre choix. voici comment faire :

- Créez un fichier .htaccess, que vous téléchargerez à la racine de votre site lorsque vous y aurez mis les instructions adéquates (v. ci-dessous). Attention, sous windows, il n’est pas possible de créer ces fichiers. Créez donc un fichier htaccess (sans le .) que vous téléchargerez plus tard à la racine de votre site. Vous le renommerez alors .htaccess (avec le . cette fois) via votre client ftp.

- Créez une page d’erreur html ou php (suivant votre choix après lecture des instructions), par exemple ma_page_d_erreur.html ou ma_page_d_erreur.php

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.

- Contenu du fichier .htaccess


        # ErrorDocument
       ErrorDocument 404 http://mon_site/ma_page_d_erreur.html

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

- Contenu du fichier .htaccess

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

- Contenu de ma_page_d_erreur.php


<!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();'>&nbsp;Cliquez ici&nbsp;</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
12 avril 2007, par   [retour au début des forums]

Ces explications sont claires et précises. Merci beaucoup. Un lecteur anonyme.


.htaccess et pages d’erreur personnalisées
3 avril 2007, par Kenshin   [retour au début des forums]

Salut

Depuis hier , j’ai beau cherché comment une fois sur la page d’error.html personnalisée qu’il effectue la redirection.

Déja le problème est que sur ma page d’erreur personnalisée , je n’ai ni images , ni CSS.

Et quand je crées un lien pour pointer vers une autre page (ex : Accueil ) Il me redemande l’authentification. Si je fais en JAVASCRIPT (document.location.href="page.html") alors la c’est fenetre infinie... Il ne veut vraiment pas de lien.

Il y a surement une solution. Aucun d’entre vous n’en parles dans son tutorial.

Merci d’essayer de m’aider. Cordialement,


Re: .htaccess et pages d’erreur personnalisées
12 avril 2007, par Robert   [retour au début des forums]

Comme indiqué plus haut, dans l’article :

Ici, vous devez absolument créer une page php, par exemple : ma_page_d_erreur.php (et non ma_page_d_erreur.html)


Re: .htaccess et pages d’erreur personnalisées
30 septembre 2007, par Raton   [retour au début des forums]

Bonjour,

On peut créer un fichier .htaccess (avec le point) dans Windows : au moment d’enregistrer il suffit de mettre le nom entre guillemets ".htaccess"

Le problème ne se pose même pas avec d’autres éditeurs de texte (par exemple Notepad++) : le nom peut commencer par un point, même sans les guillemets.

A + ;)


 
 
 
 
 
logo du FSE
 
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..