Url de provenance

Eléphanteau du PHP | 14 Messages

02 mars 2009, 13:22

Bonjour,
Comment créer une page 404 qui indique l'url de provenance ?

Exemple :
Url demandée : http://www.monsite.com/abcd.htm
La page abcd.html n'existe pas, je souhaite donc afficher la page 404 contenant : "la page abcd.htm n'existe pas"

Exemple concret : http://www.google.fr/abcd.htm

Sans utiliser $HTTP_REFERER. Mais en utilisant une fonction côté serveur.

Merci pour vos réponses !

ViPHP
ViPHP | 1136 Messages

02 mars 2009, 15:55

Slt ,

Si tu as acces à apache , tu peux personnaliser tes pages d'erreurs dans httpd.conf , recherches ce genre de lignes :

ErrorDocument 404 /missing.html

Info officiels ici : http://httpd.apache.org/docs/2.2/custom ... figuration

Ch.

Eléphanteau du PHP | 14 Messages

02 mars 2009, 16:32

non je n'ai pas accès à apache... j'héberge mon site sur free.

je cherche du côté de $_SERVER["REQUEST_URI"]
suis-je sur la bonne voie ?

merci pour ta réponse

ViPHP
ViPHP | 1136 Messages

02 mars 2009, 16:39

Humm ..

Mais en fait ce que tu veux , peut être fait uniquement si tu arrives à rediriger les pages non valides vers une page de ton choix ...

Deux solutions me viennent à l'esprit , le .htaccess ( si les options nécessaires sont disponibles ) ( ErrorDocument peut être utilisé dans un tel fichier ) ca me semble le plus simple à mettre en place !

Ou , si tu utilises un mode de fonctionnement pour ton site , tel le model MVC de zend par exemple qui redirige vers un controller , action , paramètres en fonction de l'url

Ex :

www.monappli.com/controller/action/param1/value1/

Donc là tu peux gérer les erreurs si l'url tente par exemple de charger un controller ou une action qui n'hexiste pas !

Mais sinon , je ne vois pas comment faire autrement .. :?

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

02 mars 2009, 16:44

Tu peux redéfinir localement pour ton site, une partie de la configuration d'apache à l'aide des fichier ".htaccess". Tu peux ainsi spécifier en plaçant ce genre de fichier à la racine de ton site, que toutes les erreurs 404, 403, etc. sont redirigées vers telles ou telles pages :)

Quant à connaitre l'url sollicitée, HTTP_REFERER reste la solution la plus efficace selon moi...
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphanteau du PHP | 14 Messages

02 mars 2009, 16:56

et non je n'utilise pas le "model MVC de zend" (que je ne connais pas...)

oui le .htaccess de free est paramètrable:
"ErrorDocument 404 http://monsite.com/erreur404.php"
Ce qui redirige la page inexistante abcd.htm vers erreur404.php

Mais... mais... je remarque que l'url devient http://monsite.com/erreur404.php (au lieu de http://monsite.com/abcd.htm)

@ryle: 'HTTP_REFERER' : L'adresse de la page (si elle existe) qui a conduit le client à la page courante. Cette valeur est affectée par le client, et tous les clients ne le font pas. Certains navigateurs permettent même de modifier la valeur de HTTP_REFERER, sous forme de fonctionnalité. En bref, ce n'est pas une valeur de confiance.

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

02 mars 2009, 18:32

Vi, je suis d'accord avec toi, c'est une donnée modifiable et à laquelle on ne doit pas se fier... d'un autre côté si le but est juste de dire à l'utilisateur que la page xxx.html qu'il a demandé n'est pas trouvée, c'est pas forcément bien génant s'il a bidouillé son navigateur pour ne pas te passer l'info :)

Dans la majorité des cas, tu auras affaire à des utilisateurs lambda qui auront un referer correctement renseigné... En revanche, il est clair que pour un contrôle de sécurité, c'est loin d'être l'information la plus fiable :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphanteau du PHP | 14 Messages

02 mars 2009, 18:58

@Ryle : En réalité ce n'est pas uniquement pour dire à l'utilisateur que telle url est inexistante. C'était pour simplifier mon problème... çà revient au même, j'ai vraiment besoin de cette fonction :oops:

J'en apprends un peu plus : l'url rewriiting est désactivée sur free.fr. Du coup cette fonction telle quelle ne fonctionne plus.

Mais des petits malins sont arrivés à la contourner. Je teste leur code, et je reste ouvert à vos suggestions !


Edit : Problème je n'y arrive toujours pas....

Voici le script sensé résoudre mon problème :
http://forum.webrankinfo.com/url-rewrit ... 12843.html
Mais çà ne marche pas. Il ne me renvoie pas l'url de provenance de l'erreur 404. le champ est vide.
Help me please...

Edit2, la solution : Problème résolu

Dans le fichier .htaccess il faut mettre :
"ErrorDocument /erreur404.php" adresse relative.
et non "ErrorDocument 404 http://monsite.com/erreur404.php"