E-Mail Alarm bei WordPress 404 Error
Mรถchtest du mehr zum Thema WordPress erfahren?
Alle aktuellen SEO Tools prรผfen die interne Seitenstruktur nach verwaisten Links. Das sind Links, die auf ein nicht vorhandenes Ziel zeigen. Ist eine Zielseite nicht vorhanden, gibt der Webserver einen Fehler mit dem Code 404 zurรผck. Die meisten werden das von dem 404.php Template in WordPress kennen. Hast du so ein Template nicht, wird es Zeit diese Datei anzulegen. WordPress leidet dann jeden 404 Fehler an diese Seite weiter. Dieses 404-Template sollte am besten die interne Suche und vielleicht noch ein Archiv anzeigen, um den Besucher auf deiner Seite zu halten.
Auf fehlerhafte oder falsche Links von fremden Seiten kรถnnen diese Tools allerdings nicht prรผfen. Solche Links kรถnnen durch interne รnderungen, oder Fehler beim Linkgeber, zustande kommen. Ein ganz einfaches Mittel, auf solche Links aufmerksam zu werden, ist eine E-Mail an dich, sobald eine nicht existierende Seite auf deinem WordPress Blog aufgerufen wird.
Das kann man nun wunderschรถn auf unzรคhligen Zeilen Code machen, oder quick and dirty. Im Prinzip wรผrden sogar wenige Zeilen genรผgen. Da ich aber noch einige zusรคtzliche Daten wie Refferer und User Agent interessant finde, bin ich auch auf 24 Zeilen gekommen. Um so mehr Daten du zur Verfรผgung hast, um so einfacher wird es den Grund fรผr den 404 Fehler zu finden.
Es gibt nun zwei Mรถglichkeiten den Code in dein WordPress Theme einzubauen. Der einfachste Weg ist direkt die 404.php Datei zu bearbeiten. Obwohl ich Child-Themes verwende, versuche ich aber so wenig wie mรถglich an dem Theme Dateien zu รคndern. Mein Favorit sind รnderungen รผber die functions.php. Das geht aber nur, wenn dein Theme einen Hook im 404-Template verbaut hat.
Hier nun also die zwei Versionen:
404 Template รคndern
Diesen Code kopierst du einfach in deine 404.php, in deinem Theme.
<?php
$email = get_option('admin_email');
$betreff = "[" . $_SERVER['SERVER_NAME'] . "] 404 Fehler";
$text = "Hallo Admin!\r\n\r\n";
$text .= "Folgende Seite konnte am " . date("d.m.Y, H:i", time()) . " nicht gefunden werden: \r\n";
$text .= get_option('siteurl') . $_SERVER['REQUEST_URI'] . "\r\n\r\n";
if(isset($_SERVER['HTTP_REFERER']) && $_SERVER['HTTP_REFERER'] != "") {
$text .= "- Der Besucher kam von dieser Seite (Refferer): ";
$text .= $_SERVER['HTTP_REFERER'] . "\r\n";
} else {
$text .= "- Refferer: leer\r\n";
}
if (isset($_SERVER['HTTP_USER_AGENT'])) {
$text .= "- User Agent: " . $_SERVER['HTTP_USER_AGENT'] . "\r\n\r\n";
}
$text .= "Bereinige das besser: " . get_option('siteurl') . "/wp-admin\r\n";
$header = "From: 404\r\n";
$header .= "Content-Type: text/plain";
@mail($email, $betreff, $text, $header);
?>
Hook im 404.php Template
Hier ein Beispiel fรผr die Nutzung des Hooks in meinem Lieblings-Theme Enfold. Einfach in die functions.php in deinem Theme kopieren.
/* send email on 404 */
function avia_extra_404_mail() {
$email = get_option('admin_email');
$betreff = "[" . $_SERVER['SERVER_NAME'] . "] 404 Fehler";
$text = "Hallo Admin!\r\n\r\n";
$text .= "Folgende Seite konnte am " . date("d.m.Y, H:i", time()) . " nicht gefunden werden: \r\n";
$text .= get_option('siteurl') . $_SERVER['REQUEST_URI'] . "\r\n\r\n";
if(isset($_SERVER['HTTP_REFERER']) && $_SERVER['HTTP_REFERER'] != "") {
$text .= "- Der Besucher kam von dieser Seite (Refferer): ";
$text .= $_SERVER['HTTP_REFERER'] . "\r\n";
} else {
$text .= "- Refferer: leer\r\n";
}
if (isset($_SERVER['HTTP_USER_AGENT'])) {
$text .= "- User Agent: " . $_SERVER['HTTP_USER_AGENT'] . "\r\n\r\n";
}
$text .= "Bereinige das besser: " . get_option('siteurl') . "/wp-admin\r\n";
$header = "From: 404\r\n";
$header .= "Content-Type: text/plain";
@mail($email, $betreff, $text, $header);
}
add_action( 'avia_404_extra', 'avia_extra_404_mail' );
Fazit
Ich hab das nun schon einige Tage laufen und auch schon zwei fehlerhafte Links bereinigen kรถnnen.
Allerdings kamen auch eine Menge an Bot-Zugriffen rein. Diese Robots Scannen Blogs nach Schwachstellen und was weiร ich noch. Das muss ich erst noch verfolgen, wie sich das weiter entwickelt. Vielleicht diese Bots sperren, oder diese Art von Anfragen abfangen.
Hier noch zwei Beispiele dieser Spam-Anfragen in den 404 Mails:
+Result:+chosen+nickname+;+success
RK=0/RS=l6euEfm9ixmSxI3R9lWOPzPmw1k-
Die zwei Code Beispiele funktionieren ohne รnderungen. Anpassungen an deine Bedรผrfnisse sind aber immer sinnvoll!
Offenlegung Werbelinks: Mit einem Stern (*) gekennzeichnete Links und Buttons sind sogenannte Affiliate-Links. BloggerPilot bekommt bei einem Kauf eine Provision, die sich jedoch nicht auf den Endpreis auswirkt. Es ist uns wichtig zu betonen, dass dies keinen Einfluss auf unsere Bewertung oder Meinung hat.
Sehr cool! Ich nutze auch Enfold fรผr ein Projekt, hatte die Vorbereitung im Quelltext der 404-Seite gesehen (heiรt da aber jetzt ยปavia_404_extraยซ) und wollte mir das gerade was zusammenwurschteln als ich deinen Beitrag fand. Fein.
Hat sich mit den Bots noch was getan? Hab keine Lust, im Sekundentakt Mails zu bekommen ;)
Herzliche Grรผรe,
Harald.
Hallo Harald,
das mit dem Bots musst du bei dir selbst austesten.
Wenns nur wenige sind, die stรคndig anklopfen, kรถnnte man die ja auch ausschlieรen. Vielleicht schon รผber die .htaccess.
lg
Jochen