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 :

redirection apache ErrorDocument et URL


Sujet :

Apache

  1. #1
    Membre confirmé
    Profil pro
    Développeur Web
    Inscrit en
    Octobre 2010
    Messages
    153
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Octobre 2010
    Messages : 153
    Par défaut redirection apache ErrorDocument et URL
    Bonjour à tous,
    pour diminuer les erreurs (surtout 404), je veux loguer les infos pour savoir où se trouvent les erreurs et qu'elles sont les mauvaises URL appelées.
    Dans mon .htaccess j'ai donc
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ErrorDocument 400 http://www.site.org/index.php?er=400
    ErrorDocument 401 http://www.site.org/index.php?er=401
    ...
    dans ma page d'index j'ai ensuite de quoi écrire un ligne par erreur dans un fichier texte :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $d = date("Y-m-d-H-i-s");
    $flog=fopen("erreurs.log", 'a');
    fwrite($flog, "$d|$er|$_SERVER[REMOTE_ADDR]|$_SERVER[HTTP_REFERER]|$_SERVER[REQUEST_URI]|$_SERVER[PHP_SELF]?$_SERVER[QUERY_STRING]\n");
    fclose($flog);
    En fait je veux garder l'info sur l'URL fausse or, les données accessibles ne sont que la page d'erreur elle-même !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    2012-06-01-05-48-23|404|115.126.173.232|http://www.le-site.com/de-provenance.html|/index.php?er=404|/index.php?er=404
    Bien entendu, à la place de '/index.php?er=404' je voudrais l'adresse fausse appelée.

    Merci pour le coup de main !

  2. #2
    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
    Tu arrives sur ta page index.php sur une redirection du navigateur :

    Le navigateur demande une mauvaise URL => Apache redirige ne navigateur vers /index.php?er=404
    Le navigateur demande /index.php?er=404 => écriture dans le fichier

    Donc au moment où le navigateur demande cette page index.php l'erreur 404 est déjà passée. Au mieux, le navigateur transmettra cette erreur 404 via l'en-tête Referer que tu traces déjà dans ton fichier. Donc la vraie variable qui t'intéresse est la variable $_SERVER[HTTP_REFERER].

  3. #3
    Membre confirmé
    Profil pro
    Développeur Web
    Inscrit en
    Octobre 2010
    Messages
    153
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Octobre 2010
    Messages : 153
    Par défaut
    le problème c'est que le HTTP_REFERER est bien la page d'où vient le visiteur (http://www.le-site.com/de-provenance.html dans mon exemple). Donc cette info là est toujours dans les variables d'environnement, mais l'URL intermédiaire (ma page fausse) disparait.

    Par quel moyen je pourrais donc récupérer l'URL fausse ? Y aurait-il une astuce lors de la redirection apache sur la ligne ErrorDocument (comme on il y a des options avec l'urlRewriting)... ?

  4. #4
    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
    Les deux seuls moyens que je vois c'est soit de consulter les traces d'accès du serveur Web (access_log) (c'est pas mal parce que ça t'évite d'avoir à gérer un fichier de trace spécifique supplémentaire, notamment sa rotation pour qu'il ne grossisse pas trop), soit ne pas faire de redirection explicite sur erreur 404, donc plutôt faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ErrorDocument 404 /index.php?er=404
    mais je ne sais pas si c'est possible ou compatible avec ton site.

  5. #5
    Membre confirmé
    Profil pro
    Développeur Web
    Inscrit en
    Octobre 2010
    Messages
    153
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Octobre 2010
    Messages : 153
    Par défaut
    mais ça à l'air de bien marcher ça !!
    rien que de remplacer l'URL complète par /index.php?er=404 ça me garde l'URI en cause !!
    Merci beaucoup, je n'aurais jamais pensé à ça !

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

Discussions similaires

  1. [apache 2.2] url rewrite
    Par SkyDev dans le forum Apache
    Réponses: 3
    Dernier message: 22/11/2006, 15h05
  2. redirection et nom d'URL
    Par dralom dans le forum Free
    Réponses: 6
    Dernier message: 08/11/2006, 17h15
  3. [Servlets] Redirection HTTP vers une url absolue
    Par Dinaïz dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 18/11/2005, 21h56
  4. protection + redirection Apache
    Par nicoweb371 dans le forum Apache
    Réponses: 4
    Dernier message: 18/11/2005, 14h22
  5. Redirection Apache IIS
    Par stosba dans le forum Apache
    Réponses: 1
    Dernier message: 08/11/2005, 21h54

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