Version complète: sur le forum Webmaster Hub : Erreur 404 + mail
Webmaster Hub > Création et exploitation de Sites Internet > Les langages du Net > Fichier .htaccess et réécriture d'URLs
geo909
Kikou all,

J'ai crée une page erreur404.php contenant des lignes html agrémentant la page d'erreur ainsi que les lignes suivantes en tête afin qu'un mail me soit envoyé si un internaute tape une adresse erronnée :

CODE
<?
$result=1;

if (preg_match("'DigExt'",$HTTP_USER_AGENT)) $result=0;
if (preg_match("'votre_application_JAVA'",$SCRIPT_URI)) $result=0;
if (preg_match("'cltreq.asp'",$SCRIPT_URI)) $result=0;
if (preg_match("'owssvr.dll'",$SCRIPT_URI)) $result=0;

if ($result==1){
$to="geo909_AT_entraideinfo.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 VOTRE SITE.\n\nProvenance : ".$provenance.";
Page : ".$SCRIPT_URI."\nNavigateur : $HTTP_USER_AGENT\nAdresse IP : http://$REMOTE_ADDR\nNom de domaine : ".gethostbyaddr($REMOTE_ADDR)."\n";
_AT_mail($to,$sujet,$message,"FROM:Erreur404");
}
?>


J'ai ensuite crée un fichier .htaccess contenant le chemin du fichier erreur404.php

Si pour le chemin je met /erreur404.php la notification m'est bien envoyé mais je le fichier erreur404.php ne s'affiche pas (à la place j'ai le fichier local d'erreur 404 par défaut)

Si je met le chemin complet http://www.monsite/erreur404.php, la page d'erreur perso s'affiche bien mais la notification ne m'est pas envoyée

Ma question en gros est :

Quelle est la bonne methode pour afficher une page personnalisée (genre une copie modifiée de ma page index.php) pour l'erreur 404 tout me permettant d'avoir une notification par mail ?

Merci pour vos réponses wink.gif
xpatval
Je dirais d'emblée, sans trop avoir regardé ton code, que tu devrais déjà chercher s'il existe un message d'erreur lors de la tentative (s'il y en a) d'envoi de mail, donc, pour ce faire, enlever le @ de cette ligne :
CODE
@mail($to,$sujet,$message,"FROM:Erreur404");


xpatval
geo909
Suite à la modif pas de changements...par contre je précise...

Dans le fichier htaccess quand je met l'adresse courte /erreur404.php la page perso d'erreur ne s'affiche pas mais je recoit bien le mail avec l'adresse tapée qui n'est pas correct exemple :

CITATION
Une erreur 404 s'est produite sur le site VOTRE SITE.

Provenance : Pas de lien intermédiaire, connexion directe;
Page : http://www.entyraideinfo.com/um/


Si je met l'adresse entière http://www.entraideinfo.com/erreur404.php

La page d'erreur personalisée s'affiche bien mais le mail contient les infos suivantes :

CITATION
Une erreur 404 s'est produite sur le site VOTRE SITE.

Provenance : Pas de lien intermédiaire, connexion directe;
Page : http://www.entraideinfo.com/erreur404.php
Jeanluc
Pour la différence entre les deux versions, c'est normal. Quand tu mets le http://..., aucun code 404 n'est généré et il y a toujours une redirection 302 vers l'adresse http://.... La bonne solution au niveau du .htaccess est donc bien la première. smile.gif

Dans ton erreur404.php, je ne vois pas où tu envoies le code HTML de la page d'erreur personnalisée vers ton visiteur. whistling.gif

Jean-Luc
geo909
Merci pour ta réponse...voici le fichier erreur404.php complet incluant le code HTML :

CODE
<?
$result=1;

if (preg_match("'DigExt'",$HTTP_USER_AGENT)) $result=0;
if (preg_match("'votre_application_JAVA'",$SCRIPT_URI)) $result=0;
if (preg_match("'cltreq.asp'",$SCRIPT_URI)) $result=0;
if (preg_match("'owssvr.dll'",$SCRIPT_URI)) $result=0;

if ($result==1){
$to="geo909_AT_entraideinfo.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 VOTRE SITE.\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");
}
?>
<html>

<head>
<title>Erreur 404</title>
<meta name="robots" content="noindex, follow">
</head>

<body>
<p align="center"><font size="5" color="#FF0000"><strong>IMPOSSIBLE D'AFFICHER LA PAGE
CORRECTEMENT</strong></font></p>
<p align="center"><font size="2" color="#008000">Un mail a été envoyé au
webmaster afin de corriger cette erreur.</font></p>
<p align="center"><a href="http://www.entraideinfo.com/index.html">RETOUR</a></p>

</body>
</html>
Jeanluc
As-tu essayé avec un autre navigateur que Internet Explorer ? Il me semble que quand Internet Explorer reçoit une page d'erreur de petite taille, il préfère afficher son propre message d'erreur standard. Ceci expliquerait toutes tes constatations.

Jean-Luc
geo909
T'es un chef...c'est bien ca le problème y fallait le savoir...la page s'ouvre nikel sous firefox.

Je vais mettre une copie de ma page d'accueil en tant que page d'erreur on verra si c'est bon cette fois si...

Merci beaucoup wink.gif
geo909
Bon, l'erreur ne venait apparement pas du "poids" de la page d'erreur mais d'un module complémentaire d'internet explorer du type "WebSearch" qui forcait l'affichage de la page de défaut locale.

pour désactiver ce module j'ai été IE > Menu Outils > Options Internet > Onglet Programmes > Clic sur "Gérer les modules complémentaires" > De là j'ai recherché dans le nom des modules celui de la page de défaut qui s'affichait à savoir "GreatSearchResult" et j'ai cliqué sur "Désactiver"

Et voila ma page d'erruer est apparu wink.gif
titi63
apparemment cela ne fonctionne plus avec IE7 b_thumbsdown_20.gif
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.