Version complète: sur le forum Webmaster Hub : personnaliser erreur 404
Webmaster Hub > Création et exploitation de Sites Internet > Les langages du Net > Fichier .htaccess et réécriture d'URLs
invader-u
Bonjour,

J'ai cette regle la dans mon .htaccess :
ErrorDocument 404 http://www.mondomain.com/404.php

Dans mon fichier 404.php, j'enregistre les traces dans un fichier de traces :
CODE
$texteforfile = "\n\n\n";
$handle = fopen("/home/momdomain/public_html/trace_404.txt", "a+");
$texteforfile .= "REQUEST_URI : ".$_SERVER['REQUEST_URI']."\n";
$texteforfile .= "referer : ".$_SERVER['HTTP_REFERER']."\n";
$texteforfile .= "user agent : ".$_SERVER['HTTP_USER_AGENT']."\n";
fwrite($handle, $texteforfile);
fclose($handle);
unset($texteforfile);
unset($handle);


ce qui me donne par exemple :
CITATION
REQUEST_URI : /404.php
referer : http://www.google.com/webmasters/sitemaps/...in.com%2F&hl=fr
user agent : Mozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.8.0.1) Gecko/20060111 Firefox/1.5.0.1


mais ce que je voudrais, ce n'est pas recuperer systematiquement 404.php par le $_SERVER['REQUEST_URI'], mais recuperer le nom du fichier demandé et inexistant qui a genere l'erreur 404

J'ai essaye en modifiant mon .htaccess comme ci-dessous :
CODE
ErrorDocument 404 http://www.mondomain.com/404.php?page=%{REQUEST_URI}


Puis en recuperant la variable page :

CODE
$texteforfile = "\n\n\n";
$handle = fopen("/home/mondomain/public_html/trace_404.txt", "a+");
$texteforfile .= "page demandee : ".$_GET['page']."\n";
$texteforfile .= "REQUEST_URI : ".$_SERVER['REQUEST_URI']."\n";
$texteforfile .= "referer : ".$_SERVER['HTTP_REFERER']."\n";
$texteforfile .= "user agent : ".$_SERVER['HTTP_USER_AGENT']."\n";
fwrite($handle, $texteforfile);
fclose($handle);
unset($texteforfile);
unset($handle);


Mais les traces donnent :
CITATION
page demandee : %{REQUEST_URI}
REQUEST_URI : /404.php?page=%{REQUEST_URI}
referer : http://www.google.com/webmasters/sitemaps/...in.com%2F&hl=fr
user agent : Mozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.8.0.1) Gecko/20060111 Firefox/1.5.0.1


Y a t'il une solution a mon probleme, afin que je connaisse le nom de la page demandee initialement ?

Merci
Dan
CITATION(invader-u @ vendredi 07 avril 2006, 10h20)
J'ai cette regle la dans mon .htaccess :
ErrorDocument 404 http://www.mondomain.com/404.php
*

Ca commence mal !

Avec ce type de redirection ErrorDocument, tu n'auras pas d'entête 404 mais bien une entête 200 OK.
Donc tu risques une pénalité pour contenu dupliqué !

Remplace cette ligne par
ErrorDocument 404 /404.php

Ce sera bien mieux !
Tu as l'outil http-viewer du Hub pour valider tes redirections et les entêtes retournées.

Dan
invader-u
CITATION(Dan @ vendredi 07 avril 2006, 10h39)
Ca commence mal !

Avec ce type de redirection ErrorDocument, tu n'auras pas d'entête 404 mais bien une entête 200 OK.
Donc tu risques une pénalité pour contenu dupliqué !

Remplace cette ligne par
ErrorDocument 404 /404.php

Ce sera bien mieux !
Tu as l'outil http-viewer du Hub pour valider tes redirections et les entêtes retournées.

Dan
*


Salut Dan,

J'avais deja prevu le truc, j'ai dans mon 404.php en debut de fichier :
CODE
header("HTTP/1.0 404 Not Found");


Et comme tu reponds pas a ma question je suppose que meme toi tu sais pas sad.gif
invader-u
Du coup j'ai modifie comme tu me l'as indique et le RESQUEST_URI est bon maintenant.

Merci

Si tu as du temps, j'ai une colle pour toi avec mon autre sujet juste en dessous :
http://www.webmaster-hub.com/index.php?showtopic=23469
Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'information, la mise en page et les images, veuillez cliquer ici.