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 :

Récupérer URL en erreur sur 404


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Avatar de TicTacToe
    Inscrit en
    Septembre 2005
    Messages
    1 940
    Détails du profil
    Informations personnelles :
    Âge : 52

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 940
    Par défaut Récupérer URL en erreur sur 404
    Bonjour à tous

    J'ai redirigé l'erreur 404 vers 404.php à l'aide de .htaccess.

    tout va très bien jusque là, ca fonctionne.

    Est-il possible de récupérer l'URL initalement tapée et qui à générée cette redirection 404 dans le code PHP de ma page 404.php?

    En effet, sur mon code PHP de ma page 404.PHP, lorsque j'invoque
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $_SERVER['REQUEST_URI']
    il me renvoie tout naturellement '404.php' ce qui me parait normal.

    Or ce que je voudrais récupérer, c'est l'URL style

    '/undossier/repinexistant'

    si l'URL qu'a tapée le user est

    'http://monsite/undossier/repinexistant'

    Merci d'avance pour le tuyau si cela est possible !
    Section Delphi
    La mine d'or: La FAQ, les Sources

    Un développement compliqué paraitra simple pour l'utilisateur, frustrant non ?
    Notre revanche ? l'inverse est aussi vrai ;-)

  2. #2
    Rédacteur
    Avatar de BrYs
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    2 014
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 2 014
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $_SERVER['HTTP_REFERER']

  3. #3
    Membre éprouvé
    Avatar de TicTacToe
    Inscrit en
    Septembre 2005
    Messages
    1 940
    Détails du profil
    Informations personnelles :
    Âge : 52

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 940
    Par défaut
    Ca ne marche point

    J'ai lu dans la doc sur
    http://fr.php.net/reserved.variables

    que ce n'était pas une var. "fiable". J'ai essayé avec IE et FireFox, ni l'un ni l'autre ca ne marche.

    Est-ce que ca peut venir du serveur ?

    Pour infos, voici exactement comment se passe ma redirection

    Dans le .htaccess à la racine du site:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ErrorDocument 404 http://www.xxx.fr/404.php
    Et la récupération dans 404.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <?php echo $_SERVER['HTTP_REFERER']?>
    Résultat: que dalle (vide). J'ai testé avec d'autre var. comme HTTP_HOST, ca fonctionne correctement...

    Ai-je fais une erreur qq part ??

    (désolé suis un peu newbi en PHP)

    Merci de vos info !

    [EDIT:]
    Peut-être est-il possible d'affecter HTTP_REFERER au niveau du .htaccess ? non là je reve surement...
    Section Delphi
    La mine d'or: La FAQ, les Sources

    Un développement compliqué paraitra simple pour l'utilisateur, frustrant non ?
    Notre revanche ? l'inverse est aussi vrai ;-)

  4. #4
    Membre émérite Avatar de Yobs
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    675
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2004
    Messages : 675
    Par défaut
    http_referer ne marche que si l'adresse existe donc n'est pas approprié pour ton cas et de plus comme tu as dis c'est peu fiable. http_host est la variable qu'il fallait utiliser.

  5. #5
    Membre éprouvé
    Avatar de TicTacToe
    Inscrit en
    Septembre 2005
    Messages
    1 940
    Détails du profil
    Informations personnelles :
    Âge : 52

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 940
    Par défaut
    oui mais le problème c'est que http_host ne me renvoit absolument pas ce que je veux.

    Il me renvoit le DNS mais aucun chemin...

    Je cherche à obtenir, au sein de ma page 404.php, le path demandé à l'origine (qui est donc en erreur puisque je suis dans 404.php).

    Je souhaite enfait pouvoir traiter ce chemin incorrect afin de faire une proposition cohérente à l'utilisateur...
    Section Delphi
    La mine d'or: La FAQ, les Sources

    Un développement compliqué paraitra simple pour l'utilisateur, frustrant non ?
    Notre revanche ? l'inverse est aussi vrai ;-)

  6. #6
    Membre éprouvé
    Avatar de TicTacToe
    Inscrit en
    Septembre 2005
    Messages
    1 940
    Détails du profil
    Informations personnelles :
    Âge : 52

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 940
    Par défaut
    J'ai trouvé !

    Je post la réponse au cas ou !

    La bonne fonction est bien

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $_SERVER['REQUEST_URI']
    MAIS le problème ne se situe pas là.

    En effet, dans mon .htaccess j'avais la commande (et la redirection fonctionnait correctement)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ErrorDocument 404 http://www.xxx.fr/404.php
    Le résultat PHP était: '/404.php' --> on peut pas en faire grand chose

    OR
    en mettant un chemin relatif (semi relatif on va dire) comme ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ErrorDocument 404 /404.php
    Le résultat PHP est bien le résultat souhaité: /undossier/unfichierinexistant.html

    Ne me demandez pas pourquoi ca fonctionne, des explications seraient instructives

    Mes sites étant décalés d'un rép., cela me permet de tenter une redirection judicieuse par rapport au décalage que je connais

    www.xxx.fr/unrep/unepage.html
    devient
    www.xxx.fr/decalage/unrep/unepage.html

    mais encore fallait-il connaitre le chemin do'rigine !

    Merci en tout les cas !
    Bonne journée
    Section Delphi
    La mine d'or: La FAQ, les Sources

    Un développement compliqué paraitra simple pour l'utilisateur, frustrant non ?
    Notre revanche ? l'inverse est aussi vrai ;-)

  7. #7
    Membre émérite
    Avatar de Freed0
    Profil pro
    Étudiant
    Inscrit en
    Mars 2005
    Messages
    635
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2005
    Messages : 635
    Par défaut
    J'ai utilisé la même méthode que toi (à savoir .htaccess redirigé vers erreur.php) et ça marche

    J'ai donc un fichier .htaccess avec la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ErrorDocument 404 /test/erreur.php?er=404
    Sur la page erreur.php, j'ai un switch qui recueille l'erreur (403, 404, ...) et qui affiche un message d'erreur d'après le cas...
    Pour l'erreur 404, voici le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    case 404 : echo "<b>La page <i>".$_SERVER["REQUEST_URI"]."</i> n'existe pas !</b><br>Si le problème persiste, <a href=\"mailto:xxx@xxx.com?subject=Lien Mort\">contactez le webmaster</a>."; break;
    Si tu veux voir le résultat :
    www.photo-shoot.be et tu mets n'importe quoi comme nom de page (adsd.php )

    Edit : Mince trop tard

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

Discussions similaires

  1. Réponses: 27
    Dernier message: 03/07/2010, 20h23
  2. Récupérer URL de fichiers sur un serveur
    Par BqiKo dans le forum Ext JS / Sencha
    Réponses: 1
    Dernier message: 11/06/2010, 15h56
  3. Redirection erreur 404 => récupérer url demandée
    Par Le_PounK dans le forum Servlets/JSP
    Réponses: 4
    Dernier message: 21/03/2007, 16h32
  4. [Validator] Erreur sur validation d'url
    Par fif10 dans le forum Struts 1
    Réponses: 8
    Dernier message: 24/06/2006, 21h26
  5. Réponses: 7
    Dernier message: 14/02/2006, 12h51

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