Robot, erreur 404 et redirection

Nouveau WRInaute
bonjour,

J'ai récemment installé un fichier permettant de gérer les erreurs 404.

ce fichier (erreur.php) doit normalement me renvoyer l'url de la page qui est demandé (lien mort). et un fichier log et un mail (mais ca ca marche pas chez free).

j'ai quelque questionnement par rapport a ces résultats, hormis le fait que ce fichier renvoi le nom erreur.php et non l'url brisée, mais ce point n'est pas l'objet du forum (quoique si parmi vous il y en a qui sont au top avec le php chez free je suis preneur ;)

La question en rapport avec les robots celui de google notamment, mais pas seulement, il y a régulièrement des demandes de ces robots pour des pages inconnues (voir plus haut) cela peut'il avoir ensuite une incidence sur le fait que google m'indexe?

NB : comme préconisé dans le site j'ai fait un fichier robots.txt vide

merci

djails
 
WRInaute passionné
Bonjour djails et bienvenue sur WebRankInfo !

Pas de problème pour les moteurs -dont google- dans la mesure ou ton fichier renvoie bien une entête 404 et non 200 ou 302.
Vérifie les entêtes d'une de tes pages d'erreur et tu seras fixé. :wink:

Dan
 
Nouveau WRInaute
bonjour,

merci de l'accueil :)

concernant ta réponse quand tu dit entéte ca veut dire head?

car la page généré se présente en html comme suit :

"<html>
<body>
<p style="color:red"> <font face="arial" size=3 >La page /lesitededjails.free.fr/erreur.php n'existe pas.</p>

<p>Dans 5 secondes, vous retrouverez automatiquement la page que vous venez de quitter.
<br>Sinon, cliquez ici : <a href="http://lesitededjails.free.fr/">
http://lesitededjails.free.fr/ </a>
</font>
<meta http-equiv='refresh' content='5;URL=http://lesitededjails.free.fr/'>.</body>
</html>"

donc la dedans pas de référence à une erreur 404 me semble t'il

alors c'est grave docteur?


Djails

edit : j'ai modifié le lien "cliquez ici" qui renvoi a une page qui n'existe plus
 
WRInaute impliqué
Non, Dan voulait parler de l'en-tête du fichier renvoyé par le serveur web, pas les instructions comprises entre < HEAD > ET < /HEAD >

Tu peux "agir" sur les informations figurant en en-tête notamment avec la fonction header() en php, ou en utilisant les fichiers .htaccess.
 
WRInaute passionné
Djails a dit:
ce fichier (erreur.php) doit normalement me renvoyer l'url de la page qui est demandé (lien mort). et un fichier log et un mail (mais ca ca marche pas chez free).

j'ai quelque questionnement par rapport a ces résultats, hormis le fait que ce fichier renvoi le nom erreur.php et non l'url brisée, mais ce point n'est pas l'objet du forum (quoique si parmi vous il y en a qui sont au top avec le php chez free je suis preneur

Pour recupérer le nom du lien brisé, il faut que tu l'interroge par une variable
$HTTP_REFERER par exemple.
Puisque le mail de Free n'est pas activé, trouve un autre système d'écriture dans un fichier log, ou si tu as un acces chez lycos, le mail y est actif :wink:
 
Nouveau WRInaute
cariboo a dit:
Tu peux "agir" sur les informations figurant en en-tête notamment avec la fonction header() en php, ou en utilisant les fichiers .htaccess.

ben mon .htaccess indique que si 404 --> voir erreur.php
 
Nouveau WRInaute
Kmacleod a dit:
Djails a dit:
ce fichier (erreur.php) doit normalement me renvoyer l'url de la page qui est demandé (lien mort). et un fichier log et un mail (mais ca ca marche pas chez free).

j'ai quelque questionnement par rapport a ces résultats, hormis le fait que ce fichier renvoi le nom erreur.php et non l'url brisée, mais ce point n'est pas l'objet du forum (quoique si parmi vous il y en a qui sont au top avec le php chez free je suis preneur

Pour recupérer le nom du lien brisé, il faut que tu l'interroge par une variable
$HTTP_REFERER par exemple.
Puisque le mail de Free n'est pas activé, trouve un autre système d'écriture dans un fichier log, ou si tu as un acces chez lycos, le mail y est actif :wink:

le script (on dit script pour les php?) je l'ai récupéer sur .net et le voici

<html>
<body>
<?php
$url_origine=$HTTP_REFERER;
function redirection($url_retour, $temps){
print("<meta http-equiv='refresh' content='" . $temps . ";URL=".$url_retour ."'>");
}
?>
<p style="color:red"> <font face="arial" size=3 >La page <?php echo $REDIRECT_URL; ?> n'existe pas.</p>

<p>Dans 5 secondes, vous retrouverez automatiquement la page que vous venez de quitter.
<BR>Sinon, cliquez ici : <a href="<?php echo $url_origine ?>">
<?php echo $url_origine ?>
</a>
</font>
<?
redirection($url_origine, 5);

$mail=oui;
$fichier=oui;
$fichierlog = "erreurslog.dat";

// ENVOI D'UN MESSAGE
if($mail==oui){
$message = "Adresse IP : $REMOTE_ADDR \n";
$message .= "Host : $REMOTE_HOST \n";
$message .= "Navigateur : $HTTP_USER_AGENT \n";
$DATE=getdate(time());
$daterreur="le $DATE[mday]/$DATE[mon]/$DATE[year] à $DATE[hours]h$DATE[minutes]\n";
$message .= $daterreur;
$message .= "\nErreur 404\nURL demandée : $REDIRECT_URL \nOrigine : $HTTP_REFERER";
@mail ("monadresse@free.fr","Erreur 404 - $REDIRECT_URL",$message);
}
// FIN ENVOI D'UN MESSAGE

// ENREGISTREMENT DANS UN FICHIER
if($fichier==oui){
$logdata .= $daterreur;
$logdata .= "Page demandée: $HTTP_HOST$REQUEST_URI\n";
$logdata .= "Page voulue: $REQUEST_URI\n";
$logdata .= "Page d'origine: $HTTP_REFERER\n";
$logdata .= "Adresse IP : $REMOTE_ADDR\n";
$logdata .= "Host: $REMOTE_HOST\n";
$logdata .= "Navigateur: $HTTP_USER_AGENT\n";
$logdata .= "Type de requête : $REQUEST_METHOD\n";
$logdata .= "--------------------\n";

$fp = fopen("$fichierlog", "a");
fputs($fp, $logdata);
fclose($fp);

}
//FIN ENREGISTREMENT DANS UN FICHIER

?>
</body>
</html>


en tout cas http_referer me renvoi l'url page ou se trouv ele lin cassé mais pas ce lien, je fini par me demander si c possible
 
WRInaute passionné
Djails a dit:
ben mon .htaccess indique que si 404 --> voir erreur.php
Si tu utilises une directive "ErrorDocument", assures-toi que l'adresse que tu donnes n'est pas une "full URL", sinon tu retourneras un code 200 ou 302.

ErrorDocument 404 /erreur404.php -> OK, retourne une entête 404
ErrorDocument 404 http://monsite.tld/erreur404.php -> mauvais... retourne entête 200

Dan
 
Nouveau WRInaute
le fichier .htaccess est ainsi rédige " ErrorDocument 404 /erreur.php" sans les guillemets évidemment donc si j'ai bien compris ca devrait rouler?
néanmoins dans certain news on m'a dit que pour free il fallait mettre url entière..
 
WRInaute discret
Djails a dit:
$message = "Adresse IP : $REMOTE_ADDR \n";
$message .= "Host : $REMOTE_HOST \n";
$message .= "Navigateur : $HTTP_USER_AGENT \n";
$DATE=getdate(time());
$daterreur="le $DATE[mday]/$DATE[mon]/$DATE[year] à $DATE[hours]h$DATE[minutes]\n";
$message .= $daterreur;
$message .= "\nErreur 404\nURL demandée : $REDIRECT_URL \nOrigine : $HTTP_REFERER";

De meme pour moi.

Je recois 50 mails par heure avec soi-disant des 404. Se peut-il que les images renvoient cette erreur (je pense que oui) ?

N'y a til toujours pas de moyen de trouver l'URL demandée en mettatn quelque chose dans le htaccess par exemple ?

Merci
 
Olivier Duffez (admin)
Membre du personnel
essaie aussi d'afficher les variables $_SERVER['REQUEST_URL'] et $_SERVER['REQUEST_URI'] (je ne sais plus s'il y a une différence)
au passage, ces variables globales doivent maintenant être accédées via le tableau $_SERVER il me semble
 
Nouveau WRInaute
je n'ai pas vraiment compris,

en tous cas j'ai toujousr pas l'url de la page demandé et qui est inexistante :(
 
Nouveau WRInaute
Suede a dit:
Salut,
Essaye aussi $REDIRECT_URL;
Ca dépend comment est la config de free.

François

ben dans mon fichier php c'est déja $REDIRECT_URL qui y est.
J'ai intérrogé free mais pour l'instant pas de réponses à ma question...

djails
 
Nouveau WRInaute
Bonjour,

Je suis dans le même cas :

Je suis chez online (free)

Mon fichier .htaccess contient :
ErrorDocument 404 /erreur404.php

Mon fichier erreur404.php me retourne la valeur de REQUEST_URI
Mais au lieu de me donner l’URL demandée (et mauvaise), REQUEST_URI me retourne /erreur404.php.

Du nouveau depuis mai 2003 ?!

Merci de votre aide.
 
Nouveau WRInaute
j'ai maintenant effectivement lapege demandé mais ca remonte un peu alors le code de mon fichier erruer 404 est
Code:
      <?php
$fichier=oui;
$fichierlog = "erreurslog.dat"; 

// ENREGISTREMENT DANS UN FICHIER
if($fichier==oui){
	$DATE=getdate(time());
	$daterreur="le $DATE[mday]/$DATE[mon]/$DATE[year] à $DATE[hours]h$DATE[minutes]\n";

	$logdata .= $daterreur;
	$logdata .= "Page demandée: $HTTP_HOST$REQUEST_URI\n";
	$logdata .= "Page voulue: $REDIRECT_URL\n";
	$logdata .= "Page d'origine: $HTTP_REFERER\n";
	$logdata .= "Adresse IP : $REMOTE_ADDR\n";
	$logdata .= "Host: $REMOTE_HOST\n";
	$logdata .= "Navigateur: $HTTP_USER_AGENT\n";
	$logdata .= "Type de requête : $REQUEST_METHOD\n";
	$logdata .= "--------------------\n";

	$fp = fopen("$fichierlog", "a"); 
	fputs($fp, $logdata);                                                     
	fclose($fp);

}
//FIN ENREGISTREMENT DANS UN FICHIER

?>

il y a des infos redondantes mais jen'ai fait le ménage qu'il faudrait que je fisse
 
Discussions similaires
Haut