IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

.htaccess erreur 404


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Inscrit en
    Février 2006
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 25
    Points : 19
    Points
    19
    Par défaut .htaccess erreur 404
    Bonjour,

    J'aimerais faire une redirection en cas d'erreur 404 et j'utilise le script suivant dans mon fichier .htaccess

    ErrorDocument 404 http://www.exemple.com/404.php

    Par contre, impossible de savoir dans 404.php ce qui a posé problème.

    Comment faudrait t'il faire pour trouver la page qui pose problème ? En .htaccess de préférence.

    Merci pour vos réponses...

  2. #2
    Membre expert
    Avatar de ThomasR
    Homme Profil pro
    Directeur technique
    Inscrit en
    Décembre 2007
    Messages
    2 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 2 230
    Points : 3 972
    Points
    3 972
    Par défaut
    Bonjour,

    Comment faudrait t'il faire pour trouver la page qui pose problème
    Si tu as une erreur 404 ce n'est pas un problème généré par une page puisque la page demandée n'existe pas !

    Si tu fais de l'url rewriting et que tu fais appel à un controleur, en cas d'erreur de paramètre donné au controleur tu peux faire une redirection vers la page 404 en lui passant le message d'erreur dans l'url.

  3. #3
    Membre à l'essai
    Inscrit en
    Février 2006
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 25
    Points : 19
    Points
    19
    Par défaut
    Merci,

    C'est un début de réponse ...

    Et au niveau code ça donnerais quoi ?

    Merci.

  4. #4
    Membre expert
    Avatar de ThomasR
    Homme Profil pro
    Directeur technique
    Inscrit en
    Décembre 2007
    Messages
    2 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 2 230
    Points : 3 972
    Points
    3 972
    Par défaut
    C'est un début de réponse ...
    Avec un début de question il est difficile de faire une réponse complète

    Ca donnerais ceci dans le controleur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    (bool) $pageNestPasBonne;
    if($pageNestPasBonne){ // Cette condition est à définir par tes soins
        header('location:/404.php?err=Impossible de trouver cet article dans cette catégorie');
    }
    Et dans la page 404.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    if(isset($_GET['err'])){
        echo '<p class="ErrorMsg">'.$_GET['err'].'</p>';
    }

  5. #5
    Membre à l'essai
    Inscrit en
    Février 2006
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 25
    Points : 19
    Points
    19
    Par défaut
    Oui mais non

    La redirection en cas d'erreur se fait via .htaccess ...

  6. #6
    Membre expert
    Avatar de ThomasR
    Homme Profil pro
    Directeur technique
    Inscrit en
    Décembre 2007
    Messages
    2 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 2 230
    Points : 3 972
    Points
    3 972
    Par défaut
    Oui j'avais compris, je te donnais justement une solution afin de repérer l'erreur au cas où tu avais de l'url rewriting et un controleur pour gérer certaines pages. Car tu peux très bien avoir une page qui existe mais le paramètre passé n'est pas valide et donc : 404...
    Comment faudrait t'il faire pour trouver la page qui pose problème ?
    Je sais pas si c'est faisable via htaccess de connaite la requête qui a été faite et qui n'a pas eu succès.

  7. #7
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 778
    Points
    17 778
    Par défaut
    On doit retrouver l'URL de base (qui déclenche la 404 donc) dans des variables comme $_SERVER['REQUEST_URI'] et/ou $_SERVER['REDIRECT_URL'] en PHP.

  8. #8
    Membre confirmé

    Profil pro
    Inscrit en
    Août 2007
    Messages
    496
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 496
    Points : 467
    Points
    467
    Par défaut
    Salut, je reviens sur ce topic car j'ai trouvé ce code a mettre dans un .htacces

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    RewriteEngine On
     
    RewriteCond %{REQUEST_FILENAME} !-f
     
    RewriteCond %{REQUEST_FILENAME} !-d
     
    RewriteRule (.*) /erreur-404.php
    et j'ai creer une page que j'ai nommer erreur-404.php dont voici un exemple de code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <html>
    <head>
    <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
    </head>
    <body bgcolor="white" text="black" link="blue" vlink="purple" alink="red">
    <p align="center"><b>ERREUR 404</b></p>
    <p align="center">URL de la page qui pose problème : <?php echo "$SCRIPT_URI"; ?></p>
    <p align="center">La page que tu as demandé n’existe pas ou à été déplacer ...</p>
    <p align="center">Prend soin de vérifier  l’orthographe.</p>
    </body>
    </html>
    L'url de la page s'affiche correctement avec $SCRIPT_URI lorsqu'il s'agit d'une adresse de type http://www.site.fr/index.php mais pas quand l'adresse est par exemple http://www.site.fr/index.php?id=100 car dans ce cas tout ce qui se trouve après le .php ne s'affiche pas.

    Y a t-il une autre solution pour que l'url soit complète, je fait des recherches en parallèle mais bon peut être aurai je une réponse plus rapide en passant par vos méninges


    Avant de poster faites une recherche et/ou consultez la FAQ.

    Un sujet est résolu n'oubliez pas le tag

  9. #9
    FoxLeRenard
    Invité(e)
    Par défaut
    Houlala ... une page de référence sur le sujet !!

    Alors si vous permettez je résumes ...
    Attention je ne fais que résumer ce qui a été dit ici, donc
    travail collectif, auquel j' ajoute une précision sur l'URL
    et sur la gestion des stats.

    premier point pour récupérer une erreur 404, il faut être sur un serveur Apache, si non, c' est un peut plus compliqué .

    Donc supposons que nous soyons sur Apache.

    Encore faut' il savoir a qui est donné le rôle ( le droit ) de capter
    certaines informations ! SEUL L' HEBERGEUR LE SAIT ... bien sur.

    Mais en général, sur les serveurs "PRO" le paramétrage est,
    prioritée dans l'ordre :

    au ordres du HTTACCESS
    au systéme de statistiques ...

    Alors quel mécanisme lors d'une erreur 404 ??

    le serveur regardes le htaccess s' il est imposé un fichier en cas d'erreur,
    ce fichier est lancé , et AUCUNE INFO D ERREUR 404 n' est envoyée
    Ni chez le visiteur,
    Ni au systeme de statistiques !!!

    DEMO ....
    1) mettez en place votre HTACCESS et un 404.php .... pendant un mois
    2) lisez vos stats plus d'infos 404 même pire, nombre erreurs 404=0
    3) les visiteurs lirons une belle page , celle contenue dans 404.php

    ANTI DEMO ...
    1) virez provisoirement votre HTACCESS pendant un mois
    2) Lisez vos stats ... vous aurez tout les fichiers en erreur 404
    3) les visiteurs auront eu la page d'erreur de leur navigateur !!

    ==================================================
    Voila pour la base, mais certaines choses méritent d'étre dites.

    Si nous voulons avoir une belle page d'erreur , dans le look de notre site web,
    nous voulons malgrés tout garder l'info pur nous de la page en erreur.
    C 'est exactement la question de kenny_badboy

    Alors la solution finale a été donnée par kilian67 j' y reviens de suite

    C 'est du TOP niveau et comme le dit julp on peut afficher le nom du
    fichier en erreur par $_SERVER['REQUEST_URI'] Oui si ...

    C 'est la que j'ajoute mon commentaire perso

    TOUT SE PASSE ENTRE LE SERVEUR ET HTACCESS

    Lorsque nous mettons dans htaccess

    ErrorDocument 404 http://www.monsite.com/truc404.php
    nous faisons un reroutage et nous lisons dans la bare de navigation

    http://www.monsite.com/truc404.php
    Et voila le reroutage a effacé le nom du fichier en erreur et donc
    l' instruction $_SERVER['REQUEST_URI'] donnera truc404.php
    ça merci on le savais

    En fait dans le HTACCESS il fallait mettre QUE le nom du PHP pas un reroutage (URL compléte)

    Donc dans le HTACCESS on ne mets que

    ErrorDocument 404 /truc404.php
    Si vous testez cela , vous verrez que dans votre barre d'adresse
    le fichier appelé (en erreur) est toujours la et donc cette fois on peut récupérer $_SERVER['REQUEST_URI']

    Arhhhhhhhhhhhhhhh ... Oui mais voila qu'arrive l'Ami kilian67
    En effet un paramétre de sécurité sur bien des serveurs autorise

    ErrorDocument 404 http://www.monsite.com/truc404.php
    Et refuse

    ErrorDocument 404 /truc404.php
    Alors mille mercis a kilian67 pour la parade !!


    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule (.*) /truc404.php
    Voila mais si j' ais été incomplet merci de corriger

Discussions similaires

  1. [.htaccess] Erreur 404 dans wmt
    Par nicerico dans le forum Apache
    Réponses: 8
    Dernier message: 07/09/2012, 08h06
  2. .htaccess pour gérer les erreurs 404 et alias
    Par antrax2013 dans le forum Apache
    Réponses: 4
    Dernier message: 04/12/2008, 17h11
  3. [Htaccess] Rediriger vers une page en cas d'erreur 404
    Par Alexandrebox dans le forum Apache
    Réponses: 8
    Dernier message: 12/01/2007, 07h01
  4. .htaccess pour gérer l'erreur 404 : plantage du site
    Par Thomus38 dans le forum Apache
    Réponses: 8
    Dernier message: 19/07/2006, 12h29
  5. htaccess et erreur 404 = resultat aleatoire : (
    Par NoobX dans le forum Apache
    Réponses: 7
    Dernier message: 02/10/2005, 12h52

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo