E-Mail-Alarm bei WordPress 404 Fehler

Möchtest du mehr zum Thema 404 Fehler 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 veraltete Links von externen Seiten haben diese Tools leider keinen Zugriff. Solche Probleme entstehen oft durch interne Änderungen oder Tippfehler beim Linksetzen. Eine einfache Lösung: Lass dir automatisch eine E-Mail schicken, sobald jemand eine nicht vorhandene Seite auf deinem WordPress-Blog aufruft.

Du kannst das Ganze natürlich in endlosen Codezeilen umsetzen – oder eben schnell und pragmatisch. Eigentlich reichen schon ein paar Zeilen. Weil ich aber auch Zusatzinfos wie Referrer und User Agent spannend finde, bin ich am Ende bei 24 Zeilen gelandet. Je mehr Daten du hast, desto leichter lässt sich der Auslöser für den 404-Fehler identifizieren.

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 WordPress 404 Fehler

Ich habe das schon einige Tage laufen und auch bereits zwei fehlerhafte Links bereinigen können.
Allerdings kamen auch eine Menge an Bot-Zugriffen rein. Diese Robots scannen Blogs auf Schwachstellen und was weiß ich noch nicht, was.

Das muss ich erst noch verfolgen, wie sich das weiterentwickelt. Vielleicht sperre ich die besprochenen Bots einfach.

Hier noch zwei Beispiele dieser Spam-Anfragen in den 404 Mails:

+Result:+chosen+nickname+;+success
RK=0/RS=l6euEfm9ixmSxI3R9lWOPzPmw1k-

Die zwei Codebeispiele 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.

Ähnliche Beiträge

Schreibe einen Kommentar

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

 

2 Kommentare

  1. 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.

  2. 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