Votre page d'erreur 404 est terne et vous fait perdre des visiteurs qui ont fait une fautes de frappe ou ont été mal dirigés.
Pourquoi ne pas mettre en place une page d'erreur personnalisée :)
Une page qui pourquoi pas vous envoi un mail avec la page incriminée et la provenance grâce à php.Voici donc 2 exemples un simple et un fonctionnant sur les hébergement de type FREE et ONLINE.NET qui vont vous guider .
La première chose à faire est de rediriger les pages d'erreurs vers votre page d'erreur perso. Ici 404.php
Pour ce faire placer un fichier nommé .htaccess à la racine de votre site et à l'interieur ajouter la ligne:
Pour que l'on soit informé de la provenance et de la page d'erreur, on utilise php.
On crée donc une page php que l'on place à la racine du site également.
ERREUR 404
Un e-mail va être envoyé au webmaster du site pour qu'il corrige le problème.
<?
$to="[email protected]_site.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");
?>
To est le destinataire du mail, sujet ... le sujet du mail :D.
Ensuite si le referant n'est pas null on note referrant=provenance.
Enfin on construit le message, la variable $SCRIPT_URI represente l'url de la page ou est executé le script.
Ensuite on recupère l'ip et l'host (wanadoo proxad ..) et on envoi le mail.
Le seul soucis est que ce script de mail pour les erreur 404 ne fonctionne pas sur free, ni sur online.net entre autre.
Bcp croient que c'est du à l'utilisation de la fonction mail mais pas du tout !!! C'est plus du coté de la variablede referer.
On va donc developper un script spécial pour ces hebergements.
La technique va être l'utilisation de javascript pour récupérer l'url de la page et la transmetre par php comme variable en rapellant le script qui va nous fournir le referant tant attendu.
Seul bémol il faudra pour avoir le réferrant que l'utilisateur ai javascipt d'activé.
Pour les non js on mettra en place encor une petite technique... suivez le guide:
La page php devient ceci:
Et on place ceci également sur la page:
La différence va être que le js va appeller la page 404.php qui contient le code plus haut et js va permettre de choper le referant car il recupère l'adresse de la page incriminé (celle ou la 404 a réelement lieu) puis l'envoi dans un get à 404.php.
Ensuite la page 404.php est apellée avec en paramètre la provenance et va pouvoir nous le donner et l'envoyer par mail ;).
Le soucis va être pour ceux qui n'ont pas activé javascript.
On peut choisir de les ignorer, ils ne nous enverrons pas de mail :)
Le hic: les moteurs de recherches n'ont pas js ... donc s'ils ont des 404 chez vous vous ne le saurez pas.
Par contre, dans tout les cas vous ne connaitrez pas la page incriminée (ou alor dites moi comments, je cherche encor :D).
Pour régler le problème on va donc modifier un peu le php.
On rajoute une condition else :
même si on a pas de get avec le referrant on envoi qd meme le mail 404
Par contre il ne faut pas envoyer 2 mails pour ceux qui ont javascript activé.
Donc on pose la variable $fais=1 en plus dans le else. Et on inclu le js que si $fais est différent de 1.
et cette ligne plus loin:
Et l'on crée le fichier js404.php dans lequel on recopie exactement le même code js que dans version simple pour ensuite le placer dans le même dossier que 404.php
Et voila. Je vous conseil quand même d'ignorer ceux qui n'ont pas le js sinon votre boite mail risque d'exploser si comme moi des :/#"#[)*$"*$ postent des liens vers votre site sur des forums... en se plantant dans l'url ...
Pourtant ya un lien tout fais en bas de chaque tuto ... sic
La page 404 simple
La page 404 spécialisée free et online.net la seconde versions avec la gestion des non js la page externe js
Il faut renommer les txt en php ;-)
Cette methode, de rediriger les erreurs 404 n'est pas compatible avec la vérification de sitemap de google donc désactivez la pour la vérification :).
Merci à Xorax qui m'a aider pour le tuto.