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

Apache Discussion :

Problème avec ErrorDocument


Sujet :

Apache

  1. #1
    Membre éprouvé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    1 044
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 044
    Par défaut Problème avec ErrorDocument
    Bonsoir, j'ai voulus me faire un pti script perso pour gèrer mes pages d'erreur apache.
    J'ai donc mis ceci dans un .htaccess a la racine
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    ErrorDocument 400 ./nofile.php?400
    ErrorDocument 401 ./nofile.php?401
    ErrorDocument 402 ./nofile.php?402
    ErrorDocument 403 ./nofile.php?403
    ErrorDocument 404 ./nofile.php?404
    ErrorDocument 405 ./nofile.php?405
    ErrorDocument 500 ./nofile.php?500
    ErrorDocument 501 ./nofile.php?501
    ErrorDocument 502 ./nofile.php?502
    ErrorDocument 503 ./nofile.php?503
    ErrorDocument 504 ./nofile.php?504
    ErrorDocument 505 ./nofile.php?505
    Le script php :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
     
    <?php
    if(isset($_GET['400'])){
    echo 'Echec de l\'analyse HTTP';
    redirection($page);
    }
    elseif(isset($_GET['401'])){
    echo "Le pseudo et/ou le mot de passe n'est pas correct !".
    '<b style="color:blue">Vous allez &ecirc;tre rediriger dans quelques secondes</b>';
    redirection($page);
    }
    elseif(isset($_GET['402'])){
    echo 'Le client doit reformuler sa demande avec les bonnes donnes de paiement.';
    }
    elseif(isset($_GET['403'])){
    echo 'Requ&ecirc;te interdite !<br/>'.
    '<b style="color:blue">Vous allez &ecirc;tre rediriger dans quelques secondes</b>';
    redirection($page);
    }
    elseif(isset($_GET['404'])){
    echo "La page n'existe pas ou n'existe plus !<br/>".
    '<b style="color:blue">Vous allez &ecirc;tre rediriger dans quelques secondes</b>';
    redirection($page);
    }
    elseif(isset($_GET['405'])){
    echo 'M&eacute;thode non autorise';
    }
    elseif(isset($_GET['500'])){
    echo 'Erreur interne au serveur ou serveur satur&eacute;';
    }
    elseif(isset($_GET['501'])){
    echo 'Le serveur ne supporte pas le service demand&eacute;';
    }
    elseif(isset($_GET['502'])){
    echo 'Mauvaise passerelle';
    }
    elseif(isset($_GET['502'])){
    echo ' Service indisponible';
    }
    elseif(isset($_GET['503'])){
    echo 'Service indisponible';
    }
    elseif(isset($_GET['504'])){
    echo 'Trop de temps pour la r&eacute;ponse ';
    redirection($page);
    }
    elseif(isset($_GET['505'])){
    echo 'Version HTTP non supporte ';
    }
    else{
    echo 'Erreur !!';
    } 
    ?>
    Alors si je clique sur une page qui n'existe pas j'ai une page blanche avec l'url que j'ai demandé + ce texte "./nofile.php?404"
    C'est quand même bizarre normalement sa devrais renvoyer vers la page nofile et indiquer le message correspondant a l'erreur.
    Alors si je vire le point "./nofile.php?404" devant le slash dans le htaccess sa ne fonctionne plus et renvoi le message classique d'apache
    Une idée, je précise que je suis sous windows car sous nunux c'est tt différent

  2. #2
    Membre expérimenté

    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
    Par défaut
    Vous devriez les écrire sans point et le chemin vers le script PHP dépend de son emplacement. A noter que la directive ErrorDocument n'est effective que si la configuration du serveur vous le permet (AllowOverride devant posséder au moins la valeur FileInfo pour ce répertoire - de manière explicite ou implicite, ie par héritage).

    PS : le comportement d'Apache sur la question sera strictement identique quelque soit l'OS.

  3. #3
    Membre éprouvé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    1 044
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 044
    Par défaut
    Pour activer AllowOverride je doit le chercher dans le httpd.conf ?
    C'est un peux particulier pour moi qui n'est pas l'habitude de chipoter dans la config apache
    Le script php ce trouve au même niveau que mon htaccess mais pour l'histoire du point je pense que c'étais sur le forum de wamp qu'ont me l'avais conseillé sans savoir vraiment pourquoi

  4. #4
    Membre expérimenté

    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
    Par défaut
    Citation Envoyé par gtraxx
    Pour activer AllowOverride je doit le chercher dans le httpd.conf ?
    Oui.

    Citation Envoyé par gtraxx
    Le script php ce trouve au même niveau que mon htaccess mais pour l'histoire du point je pense que c'étais sur le forum de wamp qu'ont me l'avais conseillé sans savoir vraiment pourquoi
    Avec le . au début (ou sans slash), Apache considère le deuxième paramètre comme le message (texte) à renvoyer au client en cas d'erreur et non le document (la page) à lui renvoyer. Mais vu que celui-ci est situé à la racine la valeur /nofile.php?XYZ est correcte.

    (le comportement peut être légèrement différent suivant la version d'Apache utilisée)

  5. #5
    Membre éprouvé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    1 044
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 044
    Par défaut
    merci je vais regarder pour le httpd.conf car si j'enlève le point tel quel page blanche donc c'est bien un prob de config dans apache.
    Pour wamp c'est la version 1.7.3 qui utilisais apache Apache 2.2.3

  6. #6
    Membre éprouvé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    1 044
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 044
    Par défaut
    Sa ne fonctionne toujours pas, c'est tout de même curieux
    J'ai bien AllowOverride activer (AllowOverride All) mais aucune redirection vers mon fichier d'erreur.
    Doit je vérifier autre chose dans httpd.conf ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    ErrorDocument 400 /nofile.php?400
    ErrorDocument 401 /nofile.php?401
    ErrorDocument 402 /nofile.php?402
    ErrorDocument 403 /nofile.php?403
    ErrorDocument 404 /nofile.php?404
    ErrorDocument 405 /nofile.php?405
    ErrorDocument 500 /nofile.php?500
    ErrorDocument 501 /nofile.php?501
    ErrorDocument 502 /nofile.php?502
    ErrorDocument 503 /nofile.php?503
    ErrorDocument 504 /nofile.php?504
    ErrorDocument 505 /nofile.php?505
    Logiquement il devrait être pris en compte mais rien

  7. #7
    Membre expérimenté

    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
    Par défaut
    Rien : c'est à dire ? Page blanche ? Aucune erreur dans les journaux ?

    Vous avez précédemment évoqué l'obtention d'une page blanche, qui me fait plus penser à une erreur au niveau du script PHP (la fonction redirection n'étant pas définie par exemple dans le code donné plus haut).

  8. #8
    Membre éprouvé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    1 044
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 044
    Par défaut
    non c'est sa qui est amusant aucune erreur, j'ai la page d'erreur apache originale (bon vieux 404 tout blanc lol).
    j'ai même tester en décommentant les lignes d'exemple dans httpd.conf pour voir si c'étais pas mon script et la toujours rien a croire que windows ne veux rien savoir.

  9. #9
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Par défaut
    En fait, j'ai des doutes sur le fait qu'on puisse utiliser des ? dans les URL locales d'ErrorDocument.

    Faut d'abord commencer simple, mais peut-être l'as-tu déjà fait : fais une page PHP toute bête /nofile.php qui fait juste un simple phpinfo (ça te permettra en plus de voir un peu tout ce que récupère ta page d'erreur). Ensuite, dans ton .htaccess, mets simplement ErrorDocument 404 /nofile.php et teste avec une URL qui pointe vers divers pages qui n'existent pas. Là, ça te permettra de valider que ton ErorrDocument fonctionne bien. Si ça ne marche pas, regarde les logs d'erreur Apache pour comprendre le pb. Logiquement, un truc aussi simple doit marcher.

    Ensuite, ajoute un ?404 à l'URL : ErrorDocument 404 /nofile.php?404 et regarde ce que ça donne. Si ça marche plus, et bien voilà, tu as trouvé le pb et il ne te reste plus qu'à envisager une solution alternative. Si ça marche, essaie de modifier ton fichier nofile.php progressivement pour rajouter ton code et voir où ça bloque.

  10. #10
    Membre éclairé
    Inscrit en
    Octobre 2005
    Messages
    908
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 908
    Par défaut
    j'ai un site utilisant cette technique qui fonctionne très bien...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ErrorDocument 404 /erreur.php?id=404

  11. #11
    Membre éprouvé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    1 044
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 044
    Par défaut
    Bon j'ai trouvé l'erreur en vérifiant les logs d'apache, en fait la différence entre le local et une production est tout simplement le chemin a indiquer dans le htaccess.
    En gros:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ErrorDocument 404 /monsitedeteste/erreur.php?id=404
    c'étais vraiment une erreur a la ****** , j'aurai du m'en douter
    En local vous avec souvent une url de ce type : http://localhost/monsitequitue/index.php
    Ce qui pose problème pour un htaccess en local c'est qu'il faut lui indiquer le dossier du site web en question
    Voila pour la petite explication rapide pour ceux dans le même cas
    grand merci a vous d'avoir chercher avec moi

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème avec ErrorDocument 404 et les images
    Par saluts92 dans le forum Apache
    Réponses: 4
    Dernier message: 13/06/2013, 21h18
  2. VC++ Direct3D8, problème avec LPD3DXFONT et LPD3DTEXTURE8
    Par Magus (Dave) dans le forum DirectX
    Réponses: 3
    Dernier message: 03/08/2002, 11h10
  3. Problème avec le type 'Corba::Any_out'
    Par Steven dans le forum CORBA
    Réponses: 2
    Dernier message: 14/07/2002, 18h48
  4. Problème avec la mémoire virtuelle
    Par Anonymous dans le forum CORBA
    Réponses: 13
    Dernier message: 16/04/2002, 16h10

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