8791 sujets

Développement web côté serveur, CMS

Voila mon probléme,
Sur mon site web, j'ais un fichier .htaccess qui redirige les erreurs 404
comme ceci:

ErrorDocument 404 http://www.xxxxxxxxxxxx.com/fi_404.php

Trés bien mais par contre les erreurs 404 ne sont bien sur plus visibles dans mes statistiques et je ne les maitrises plus !

MA QUESTION:
Comment dans fi_404.php puis-je récupérer le nom du html ou image ayant causé cette erreur. ainsi le visiteur ne vois pas l'erreur puisque
actuelement il reroute vers index.php, mais j'aurais le temps de mettre
le fichier en erreur dans une base mysql (pour moi) ...

Merci d'avance
masseuro a écrit :
as-tu essayé avec un la variable de referer?

Sachant que je suis en PHP je sais qu'il y a cette variable, je vais chercher comment on l'emploie, (si tu sais tu me met un bout de code ?)

En tout cas mille mercis de ta réponse
Hello FoxLeRenard,

J'étais tombé sur une discussion au sujet du header renvoyé en cas de ErrorDocument 404... c'est ici.
Et en page 2 il y a un exemple de récupération du HTTP_REFERER. Je n'ai pas testé le script mais je pense que c'est une bonne base de réflexion. A noter qu'il est un peu vieux et qu'il faudra certainement remplacer les variables (par exemple $_SERVER['HTTP_REFERER'] à la place de $HTTP_REFERER)

@+ Smiley cligne
IL est possible de savoir quel fichier a été demandé au moyen de la variable $_SERVER['REQUEST_URI'] ... je m'en sers pour enregistrer dans un .txt une sorte de log des 404 ... ceci dit attention car ça va très vite : ce système n'est en place que depuis environ 2 mois chez moi et le fichier .txt fait déjà plus de 400 Ko...

LE referer, lui, par contre, contient normalement l'URL de la page qui était visitée juste avant d'arriver sur la 404, ou dans le cas d'une image, la page où elle aurait dû s'afficher.

En utilisant ces deux variables à bon escient, on arrive assez bien à tracer les erreurs sans que le visiteur ne le voie, tout pendant que le referer est bien renseigné (ce qui n'est pas toujours le cas).
Modifié par QuentinC (09 Oct 2006 - 23:07)
QuentinC a écrit :
IL est possible de savoir quel fichier a été demandé au moyen de la variable $_SERVER['REQUEST_URI'] ... je m'en sers pour enregistrer dans un .txt une sorte de log des 404 ... ceci dit attention car ça va très vite : ce système n'est en place que depuis environ 2 mois chez moi et le fichier .txt fait déjà plus de 400 Ko...

LE referer, lui, par contre, contient normalement l'URL de la page qui était visitée juste avant d'arriver sur la 404, ou dans le cas d'une image, la page où elle aurait dû s'afficher.

En utilisant ces deux variables à bon escient, on arrive assez bien à tracer les erreurs sans que le visiteur ne le voie, tout pendant que le referer est bien renseigné (ce qui n'est pas toujours le cas).

Whaou super je testes et te tiendrais au courant de toute façon Smiley biggrin
Et encore merci
Bonjour à tous,

Après vous avoir lu, je ne comprends toujouts pas comment faire.
Quelqu'un peut-il me dire ce qui ne marche pas dans ce script :
(http://ppzx.net/erreur/erreur404.php5)
ERREUR 404
Un e-mail va être envoyé au webmaster du site pour qu'il corrige le problème.
<?
$to="xxxx@yyyyy.com";
$sujet="ERREUR 404 sur VOTRE SITE.";
if(empty($HTTP_REFERER)) { $provenance="Pas de lien intermédiaire, connexion directe"; } else { $provenance=$HTTP_REFERER; }
$message="\nUne erreur 404 s'est produite sur le site ppzx.\n\nProvenance : ".$provenance.";
Page : ".$SCRIPT_URI."\nNavigateur : $HTTP_USER_AGENT\nAdresse IP :  http://$REMOTE_ADDR\nNom  de domaine : ".gethostbyaddr($REMOTE_ADDR)."\n";
@mail($to,$sujet,$message,"FROM:Erreur404");
?>
Erreur reçue :
ERREUR 404 Un e-mail va être envoyé au webmaster du site pour qu'il corrige le problème.
Warning: gethostbyaddr() [function.gethostbyaddr]: Address is not in a.b.c.d form in /space/www/gl-ouv/1/3/1311030108288863/web/ppzx.net/www.ppzx.net/html/erreur/erreur404.php5 on line 49

Merci d'avance, pierreandre