TROUVER LA PAGE D'ORIGINE D'UNE ERREUR 404
15 messages
• Page 1 sur 1
Consultez la formation URL Rewriting et sites dynamiques de WebRankInfo / Ranking Metrics
-

malango - WRInaute discret

- Messages: 89
- Inscription: 14 Oct 2003
TROUVER LA PAGE D'ORIGINE D'UNE ERREUR 404
Je suppose que je suis en train de réinventer l'eau chaude. Alors demander si klkun a déjà la solution, qui existe forcément...
Voilà mon problème : à force de bidouiller le site dans tous les sens, de trouver toujours LA solution.... bref, j'en arrive à avoir une page d'erreur qui reçoit autant de visiteurs que toutes les autres pages... C'est un peu con! J'ai tenté de me faire envoyer un mail à chaque erreur 404 en m'envoyant le nom de la pga d'origine, celle qui contient un lien qui renvoit une erreur 404. Que nenni! Pipo! pas de referrer dans le mail.
Comment récupérer le nom de la page d'origine ou quelle est la meilleure solution pour recevoir ce mail et surtout LE NOM DE LA PAGE QUI M.....
Certains hébergeurs proposent cette fonction... Pas le mien!
C'est grave, docteur?
Voilà mon problème : à force de bidouiller le site dans tous les sens, de trouver toujours LA solution.... bref, j'en arrive à avoir une page d'erreur qui reçoit autant de visiteurs que toutes les autres pages... C'est un peu con! J'ai tenté de me faire envoyer un mail à chaque erreur 404 en m'envoyant le nom de la pga d'origine, celle qui contient un lien qui renvoit une erreur 404. Que nenni! Pipo! pas de referrer dans le mail.
Comment récupérer le nom de la page d'origine ou quelle est la meilleure solution pour recevoir ce mail et surtout LE NOM DE LA PAGE QUI M.....
Certains hébergeurs proposent cette fonction... Pas le mien!
C'est grave, docteur?
-

WebRankInfo - Administrateur du site

- Messages: 19422
- Inscription: 19 Avr 2002
dis-nous ce que tu as mis dans ton .htaccess pour gérer la page 404, ainsi que les lignes de code utilisées pour t'envoyer le referer par email...
-

Remi L. - WRInaute passionné

- Messages: 1063
- Inscription: 6 Sep 2003
Plutôt que de t'envoyer un mail à chaque erreur (ce que je trouve assez démesuré...), tu peux stocker les info dans un fichier.
En PHP, tu auras l'url demandée dans la variable $_SERVER["REQUEST_URI"].
Tu peux même te mettre toutes les autres infos (time, referer, user-agent, etc...), des logs d'erreur en quelque sorte...
L'essayer c'est l'adopter
En PHP, tu auras l'url demandée dans la variable $_SERVER["REQUEST_URI"].
Tu peux même te mettre toutes les autres infos (time, referer, user-agent, etc...), des logs d'erreur en quelque sorte...
L'essayer c'est l'adopter
-

malango - WRInaute discret

- Messages: 89
- Inscription: 14 Oct 2003
Remi L. a écrit:Plutôt que de t'envoyer un mail à chaque erreur (ce que je trouve assez démesuré...), tu peux stocker les info dans un fichier.
En PHP, tu auras l'url demandée dans la variable $_SERVER["REQUEST_URI"].
Tu peux même te mettre toutes les autres infos (time, referer, user-agent, etc...), des logs d'erreur en quelque sorte...
L'essayer c'est l'adopter
Le pblme c'est que si je fais une redirection vers une page "erreur.php", l'URI devient tout logiquement www.tartempion/erreur.php....
Y a-t-il un moyen de récupérer ce REQUEST_URI sous une forme quelconque dans le HTACCESS qui permettrait par exemple de faire une redirection genre :
erreur.php?page=resultat_fontion_htaccess?
-

malango - WRInaute discret

- Messages: 89
- Inscription: 14 Oct 2003
J'ai cherché un peu partout une doc sur l'utilisaion des variables dans le HTACCESS... Rien! A part l'incourtournable article de Dan Hezl qu'on retrouve sur 2165487 sites (au moins...) rien d'autre!
Pourtant elles existent et je ne dois pas être loin de la solution...
dernier esai infructueux en date :
dans le HTACCESS :
ErrorDocument 404 http://w*w.malango.net/erreur.php?page= %{HTTP_REFERER}
ça marche pas mais c'est dans l'écriture de la variable HTTP_REFERER que ça m...
Est-il possible de trouver une doc sur les variables utilisées dans le HTACCESS et la manière de les utiliser????
Pourtant elles existent et je ne dois pas être loin de la solution...
dernier esai infructueux en date :
dans le HTACCESS :
ErrorDocument 404 http://w*w.malango.net/erreur.php?page= %{HTTP_REFERER}
ça marche pas mais c'est dans l'écriture de la variable HTTP_REFERER que ça m...
Est-il possible de trouver une doc sur les variables utilisées dans le HTACCESS et la manière de les utiliser????
- nikoshr
- WRInaute occasionnel

- Messages: 320
- Inscription: 10 Juil 2003
Oui, oui, pas de problème : la doc Apache, la liste des directives, celles valides pour un .htaccess ont un h dans la colonne de droite.
et dans erreur.php tu récupères les variables du serveur et de la requête, voir les variables prédéfinies de PHP
Dans la directive ErrorDocument, utiliser un nom de domaine complet force une redirection. La syntaxe ci-dessus fait appel à un fichier local et préserve le code de retour (404).
- Code: Tout sélectionner
ErrorDocument 404 /erreur.php
et dans erreur.php tu récupères les variables du serveur et de la requête, voir les variables prédéfinies de PHP
Dans la directive ErrorDocument, utiliser un nom de domaine complet force une redirection. La syntaxe ci-dessus fait appel à un fichier local et préserve le code de retour (404).
-

malango - WRInaute discret

- Messages: 89
- Inscription: 14 Oct 2003
nikoshr a écrit:Oui, oui, pas de problème : la doc Apache, la liste des directives, celles valides pour un .htaccess ont un h dans la colonne de droite.
- Code: Tout sélectionner
ErrorDocument 404 /erreur.php
et dans erreur.php tu récupères les variables du serveur et de la requête, voir les variables prédéfinies de PHP
Dans la directive ErrorDocument, utiliser un nom de domaine complet force une redirection. La syntaxe ci-dessus fait appel à un fichier local et préserve le code de retour (404).
COOL, on avance! En fait, c'est bien le chemin absolu qui foutait la m...
Par contre, quand l'erreur vient d'une page du site, le $_SERVER['HTTP_REFERRER'] ne renvoit aucune valeur... J'attends de voir ce qui se passe quand le lien vient de l'extérieur, mais à priori ça marche : j'utilise ça pour mon compteur...
-

Remi L. - WRInaute passionné

- Messages: 1063
- Inscription: 6 Sep 2003
Tiens, voilà en gros le code que j'utilise depuis un certain temps pour me créer des logs au même format que ceux d'Apache avec les erreurs 404.
Ce bout de PHP est placé dans mon erreur404.php mis en place grâce au htaccess, tel que l'a décrit Nikoshr
- Code: Tout sélectionner
<?php
$logfile = "../erreurs404.log";
$mydomain = "www.mondomaine.com";
$timezone="+0100";
$MonthLib = array("Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec");
$lt= localtime(time());
$time= sprintf("[%02d/%s/%04d:%02d:%02d:%02d $timezone]",$lt[3],$MonthLib[$lt[4]],$lt[5]+1900,$lt[2],$lt[1],$lt[0]);
$refer=$_SERVER["HTTP_REFERER"];
$fd=fopen($logfile,"a");
if($fd){
flock($fd,LOCK_EX);
fputs($fd,$_SERVER["REMOTE_ADDR"]." $mydomain - $time \"GET ".$_SERVER["REQUEST_URI"]." ".$_SERVER["SERVER_PROTOCOL"]."\" 404 -"." \"$refer\" \"".$_SERVER["HTTP_USER_AGENT"]."\"\n");
flock($fd,LOCK_UN);
fclose($fd);
}
?>
Le fichier de log est placé au dessus de ma zone accessible par http, pour que je sois le seul à pouvoir le lire.
Je récupère ce fichier assez régulièrement et cela me suffit à cerner les problèmes, tout en m'évitant d'extirper les erreurs 404 de mes fichiers ordinaires de logs.
Voili voilou...
-

malango - WRInaute discret

- Messages: 89
- Inscription: 14 Oct 2003
Remi L. a écrit::? C'est pas le referer qu'il te faut... c'est request_uri...
Tiens, voilà en gros le code que j'utilise depuis un certain temps pour me créer des logs au même format que ceux d'Apache avec les erreurs 404.
Ce bout de PHP est placé dans mon erreur404.php mis en place grâce au htaccess, tel que l'a décrit Nikoshr
- Code: Tout sélectionner
<?php
$logfile = "../erreurs404.log";
$mydomain = "www.mondomaine.com";
$timezone="+0100";
$MonthLib = array("Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec");
$lt= localtime(time());
$time= sprintf("[%02d/%s/%04d:%02d:%02d:%02d $timezone]",$lt[3],$MonthLib[$lt[4]],$lt[5]+1900,$lt[2],$lt[1],$lt[0]);
$refer=$_SERVER["HTTP_REFERER"];
$fd=fopen($logfile,"a");
if($fd){
flock($fd,LOCK_EX);
fputs($fd,$_SERVER["REMOTE_ADDR"]." $mydomain - $time "GET ".$_SERVER["REQUEST_URI"]." ".$_SERVER["SERVER_PROTOCOL"]."" 404 -"." "$refer" "".$_SERVER["HTTP_USER_AGENT"].""\n");
flock($fd,LOCK_UN);
fclose($fd);
}
?>
Le fichier de log est placé au dessus de ma zone accessible par http, pour que je sois le seul à pouvoir le lire.
Je récupère ce fichier assez régulièrement et cela me suffit à cerner les problèmes, tout en m'évitant d'extirper les erreurs 404 de mes fichiers ordinaires de logs.
Voili voilou...
L'URI, je la récupère bien, mais ce que je veux savoir c'est sur quelle page il y a le lien mort... que ce soit en interne ou en externe (histoire de prévenir le site ou de mettre une redirection...)
J'essaie ta moulinette et je te dis quoi
Merci
- Davidc
- Nouveau WRInaute

- Messages: 8
- Inscription: 17 Fév 2004
heu... j'ai peut-être mal compris un truc mais j'ai eu l'impression qu'il te disait de ne plus regarder le REFERER mais plutôt le REQUEST_URI
(qu'il récupère également au passage)
normalement si le htaccess fait une réécriture locale (sans le http:// ... )
et que tu prends le REQUEST_URI tu as ce que tu cherchais.
c'est une solution de ce type qu'il te faudra utiliser, tu peux donc tenter pourquoi pas d'autres variables, mais l'une de ces deux là est sensée convenir
mais ceci dit la doc d'Apache cite aussi des usages comme ceux auxquels tu penses:
donc en utilisant les variables qui nous intéressent ici, il doit y avoir moyen de faire une ré-écriture (sans redirection) pour avoir du
.....php?uri=%{REQUEST_URI}
si ni l'un ni l'autre ne fonctionne ça sera à en perdre son latin.
(qu'il récupère également au passage)
normalement si le htaccess fait une réécriture locale (sans le http:// ... )
et que tu prends le REQUEST_URI tu as ce que tu cherchais.
c'est une solution de ce type qu'il te faudra utiliser, tu peux donc tenter pourquoi pas d'autres variables, mais l'une de ces deux là est sensée convenir
THE_REQUEST
The full HTTP request line sent by the browser to the server (e.g., "GET / index.html HTTP/1.1"). This does not include any additional headers sent by the browser.
REQUEST_URI
The resource requested in the HTTP request line. (In the example above, this would be "/index.html".)
mais ceci dit la doc d'Apache cite aussi des usages comme ceux auxquels tu penses:
par exemple...RewriteRule ^(.+) %{HTTP_HOST}$1
donc en utilisant les variables qui nous intéressent ici, il doit y avoir moyen de faire une ré-écriture (sans redirection) pour avoir du
.....php?uri=%{REQUEST_URI}
si ni l'un ni l'autre ne fonctionne ça sera à en perdre son latin.
- Davidc
- Nouveau WRInaute

- Messages: 8
- Inscription: 17 Fév 2004
Trouvé sur un autre forum, ça pourrait t'aider:
note que pour certains ça fonctionne très bien de la première façon, et pour lui seulement de cette façon là, peut-être des histoires de configuration de php ou du derveur ?
essaye toujours... on ne sait jamais. Si ça se trouve tu peux l'avoir quand même ton referer... Et puis sinon (puisque le referer n'est pas une info fiable: parfois masquée par la config parfois non émis par le navigateur) tu pourras toujours essayer également:
$_SERVER['remote_host'] pour voir éventuellement si ça vient toujorus du même endroit (si oui, l'erreur ne vient peut-être pas de toi mais d'un favori mal mémorisé ?)
enfin bon... voilà les idées que j'ai ... A+
the $_SERVER['HTTP_REFERER'] is empty in a custom error page. But I did some research and discovered that this info is available via getenv('HTTP_REFERER').
Maybe this may help other people with the same problem.
note que pour certains ça fonctionne très bien de la première façon, et pour lui seulement de cette façon là, peut-être des histoires de configuration de php ou du derveur ?
essaye toujours... on ne sait jamais. Si ça se trouve tu peux l'avoir quand même ton referer... Et puis sinon (puisque le referer n'est pas une info fiable: parfois masquée par la config parfois non émis par le navigateur) tu pourras toujours essayer également:
$_SERVER['remote_host'] pour voir éventuellement si ça vient toujorus du même endroit (si oui, l'erreur ne vient peut-être pas de toi mais d'un favori mal mémorisé ?)
enfin bon... voilà les idées que j'ai ... A+
-

malango - WRInaute discret

- Messages: 89
- Inscription: 14 Oct 2003
ÇA MARCHE !!!
On récapitule?
dans le htaccess :
ErrorDocument 404 /erreur.php
avec une adresse RELATIVE (merci nikoshr!)
dans la page d'erreur :
$prov = getenv('HTTP_REFERER');
$uri = $_SERVER["REQUEST_URI"];
avec utilisation de la fonction getenv() (merci Davidc!)
On récapitule?
dans le htaccess :
ErrorDocument 404 /erreur.php
avec une adresse RELATIVE (merci nikoshr!)
dans la page d'erreur :
$prov = getenv('HTTP_REFERER');
$uri = $_SERVER["REQUEST_URI"];
avec utilisation de la fonction getenv() (merci Davidc!)
-

iubito - Nouveau WRInaute

- Messages: 33
- Inscription: 25 Avr 2004
Moi je viens de me prendre la tête avec ça sur un site chez free.
Ma solution :
.htaccess :
/404.php :
Ma solution :
.htaccess :
- Code: Tout sélectionner
ErrorDocument 404 /404.php
/404.php :
- Code: Tout sélectionner
<?php
//echo 'REFERER = '.getenv('HTTP_REFERER');
//echo '<br />REQUEST_URI = '.getenv("REQUEST_URI");
//Enlève le / du début
$title = ereg_replace("^/", "", getenv("REQUEST_URI"));
//die($title);
header('HTTP/1.0 200 OK');
header("Location: index.php?title='.$title);
?>
15 messages
• Page 1 sur 1
Formation recommandée sur ce thème :
Formation URL Rewriting et sites dynamiques : apprenez comment mettre en place la réécriture d'URL, comment optimiser vos URL et profiter de vos pages dynamiques pour booster votre référencement. Formation animée par Olivier Duffez et Fabien Facériès, experts en référencement naturel.
Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.
Lectures recommandées sur ce thème :
- Rediriger une erreur 404 vers la page d'acceuil
- Générer une erreur 404 en page perso Wanadoo
- page erreur 404 : savoir quelle était la page demandée ?
- page erreur 404
- Plusieurs page erreur 404
- Page d'erreur et erreur 404
- Origine d'une erreur 500 ?
- forcer une erreur 404
- Créer une erreur 404 ...
- Générer une erreur 404
- Analyse de l'entête HTTP
Cet outil vous permet de connaître le code HTTP renvoyé par le serveur pour une page donnée. - Trouver la position d'un site dans Google
Cet outil vous permet de vérifier si une ou plusieurs page(s) de votre site arrive(nt) dans les premiers résultats de Google, pour certains mots-clés recherchés. - Trouver la position d'un site dans Yahoo
Cet outil vous permet de vérifier si une ou plusieurs page(s) de votre site arrive(nt) dans les premiers résultats de Yahoo, pour certains mots-clés recherchés.
Qui est en ligne
Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités
