E-Mail Alarm bei WordPress 404 Error

Artikel wurde aktualisiert am 26.10.2016

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 zu 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!

Verfasst in: WordpressTags: , ,

Willst du an der Diskussion teilnehmen?


Kommentar verfassen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Kommentar *

Name *
E-Mail *
Webseite