Etre prévenu des 404

WRInaute passionné
Bonjour,

Y'a t-il moyen d'être prévenu des erreurs 404 sur mon dédié ?
Je cherche une solution autre qu'aller voir dans mes logs :-)

Peut être un mail envoyé automatiquement à chaque erreur, ou bien un résumé une fois par jour ... ?


Merci
 
WRInaute accro
En gérant ça via une 404 personnalisée et un script qui stocke la page en erreur à chaque affichage de la 404 personnalisée ?
 
WRInaute passionné
je me suis fait un petit script qui me permet, partir d'une page d'erreur 404 personnalisée, de gérer les erreurs : -http://www.phpsources.org/ressources-securite-php171.htm
Ca log dans une table les erreurs et ca permet de définir une redirection 301 automatique si besoin.
 
WRInaute passionné
oui mais moi je veux principalement checker les images en 404 et les css, les js, les pdf ... mais pas les codes des pages !
 
WRInaute passionné
un truc du genre a lancer a la main ou en cron

Code:
$f = file("var/log/apache2/error.log");
if (!$f) {
	exit("Impossible de trouver le fichier demandé\n");
}

while(list($key,$val) = each($f)) 
{
	$val = trim($val);
	$exp = explode("\n",$val);
	
	$geterror = explode("File does not exist:",$exp[0]);
	if (count('pdf',$geterror[1])>1 || count('jpg',$geterror[1])>1 ......) {
	mail ('ruddy','putain! j'ai pas fais mon boulot',$geterror[1].' est en 404');
	}
}
 
WRInaute impliqué
Un code que j'utilise sur mes sites:

Code:
//envoi mail page erreur
function mail_erreur($type){
	$email_admin = "";

	$monsite = "" ; // utile si vous administrez plusieurs sites

	$message_titre = "[Erreur 404 " . $monsite . "] $type" ;

	$message_corps = "Erreur 404 sur le site " . $monsite . ".\r\n" .
	"Une page demandee n a pas ete trouvee. \r\n" .
	"Url de la page : " . $_SERVER['REQUEST_URI'] . "\r\n" .       
	"Url de provenance : " . $_SERVER['HTTP_REFERER'] . "\r\n" .
	"IP du visiteur : " . $_SERVER['REMOTE_ADDR'] . "\r\n" .
	"Navigateur : " . $_SERVER['HTTP_USER_AGENT'] . "\r\n" .
	"Heure de la requete : " . date('d/m/Y G:i:s') . "\r\n" ."\r\n" ."\r\n" .
	"Contenu brut du tableau global $_SERVER : " . print_r($_SERVER,true)  ;

	// Envoi du message
	mail($email_admin, $message_titre, $message_corps,'','');
}
// envoi d'un message si la page demandee est un fichier html ou php
if (strpos($_SERVER['REQUEST_URI'], '.html') !== false || 
strpos($_SERVER['REQUEST_URI'], '.php') !== false)){ 
 mail_erreur('');
}
 
WRInaute passionné
if
Code:
// envoi d'un message si la page demandee est un fichier html ou php
if (strpos($_SERVER['REQUEST_URI'], '.html') !== false || 
strpos($_SERVER['REQUEST_URI'], '.php') !== false)){ 
 mail_erreur('');
}

else

???
 
WRInaute accro
si c'est pour WP, il y a des extensions dédiées,c omme 404 notifier.

Cela doit probablement exister pour d'autres CMS (merci de ton retour, si tu fais la recherche).
 
WRInaute passionné
il y a beaucoup d'erreurs 404 à cause de robots qui gèrent mal les url relatives ou de ceux qui cherchent une faille de sécurité et qui testent des urls.
 
WRInaute passionné
rudddy a dit:
Julia41 a dit:
Ouais enfin si tu te prends un scan... Tu vas bouffer :P
j'ai pas compris (dsl)
Si jamais tu souhaites recevoir un mail à chaque erreur 404, en cas de scan de ton site tu vas en recevoir beaucoup.
Un scan est "on cherche où est installé PHPMyadmin" par exemple
Donc on test avec :
/phpmyadmin/
/pma/
/PhpMyAdmin/
etc avec les numéros de versions, des majuscules.
Généralement un scan "basique" PHPMyAdmin est de 1000 pages, si en plus tu es sur du joomla, là ils scannent modules par modules...
Ca va plutôt vite donc bon, si jamais tu ne veux pas te retrouver avec 5000 mails un matin, ton script devra faire attention ;)

Le mieux pour ça est de regarder tes logs je pense :
Code:
cd /var/log/apache2/
cat *.log | grep " 404 "
Pas sûr de la syntaxe je n'utilise pas Apache.
 
WRInaute passionné
dans la mesure ou il souhaite un truc auto > parser le fichier de log en php non?...
sinon un bash avec mailx peut faire l'affaire aussi ?

un truc du genre (pas sur de la syntaxe)
Code:
#!/bin/bash
cat /var/log/apache2/error.log | grep " 404 "
if [ "$?" = "" ]
then
echo "pas de 404"
else
echo "404 detectee" | mailx -s "page : $?" tonmail@domail.tld
fi
 
Nouveau WRInaute
Dans Awstats, tu peux voir le log des erreurs 404. C'est plus lisible que les logs d'Apache, ce sont des agrégats (donc les pages les plus problématiques sont en haut, bien visibles), et en bonus t'as des stats! que demander de plus :)

Si tu veux tu peux t'envoyer la page html générée par Awstats une fois par jour. Parce que franchement c'est beaucoup de boulot pour un bénéfice assez limité.
 
Discussions similaires
Haut