Internet Tutorials

Email-Benachrichtigung bei 404 Error’s eures WordPress Blogs

Nicht vorhandene Seiten kommen bei Besuchern eines Blogs immer schlecht an, daher sollte man es vermeiden ältere Artikel einfach zu löschen und sie stattdessen beispielsweise auf neuere umleiten. Doch 404 Error’s schleichen sich immer irgendwann mal ein und man muss etwas gegen sie unternehmen und braucht daher auch einen Überblick. Dabei helfen beispielsweise die Google Webmaster Tools, doch bis eine Seite dort auftaucht können auch schon Wochen ins Land ziehen. Also wieso nicht eine direkte Email-Benachrichtigung beim Auftreten des Fehlers absenden?

Auf WP-Mix habe ich ein entsprechendes Script gefunden. Ihr müsst lediglich die Zeilen 8 bis 10 bearbeiten und dort eure Informationen angeben. Anschließend kopiert ihr den Code in die 404.php eures Themes. Setzt ihn einfach oberhalb des enthaltenen Codes ein. Sollte noch keine 404.php vorhanden sein, legt diese einfach an. Schreibt am besten noch einen kurzen Text dazu, dass die Seite nicht vorhanden ist. Nur damit der Besucher Bescheid weiß.

<?php // WP 404 ALERTS @ http://wp-mix.com/wordpress-404-email-alerts/

// set status
header("HTTP/1.1 404 Not Found");
header("Status: 404 Not Found");

// site info
$blog  = get_bloginfo('name');
$site  = get_bloginfo('url') . '/';
$email = get_bloginfo('admin_email');

// theme info
if (!empty($_COOKIE["nkthemeswitch" . COOKIEHASH])) {
	$theme = clean($_COOKIE["nkthemeswitch" . COOKIEHASH]);
} else {
	$theme_data = wp_get_theme();
	$theme = clean($theme_data->Name);
}

// referrer
if (isset($_SERVER['HTTP_REFERER'])) {
	$referer = clean($_SERVER['HTTP_REFERER']);
} else {
	$referer = "undefined";
}
// request URI
if (isset($_SERVER['REQUEST_URI']) && isset($_SERVER["HTTP_HOST"])) {
	$request = clean('http://' . $_SERVER["HTTP_HOST"] . $_SERVER["REQUEST_URI"]);
} else {
	$request = "undefined";
}
// query string
if (isset($_SERVER['QUERY_STRING'])) {
	$string = clean($_SERVER['QUERY_STRING']);
} else {
	$string = "undefined";
}
// IP address
if (isset($_SERVER['REMOTE_ADDR'])) {
	$address = clean($_SERVER['REMOTE_ADDR']);
} else {
	$address = "undefined";
}
// user agent
if (isset($_SERVER['HTTP_USER_AGENT'])) {
	$agent = clean($_SERVER['HTTP_USER_AGENT']);
} else {
	$agent = "undefined";
}
// identity
if (isset($_SERVER['REMOTE_IDENT'])) {
	$remote = clean($_SERVER['REMOTE_IDENT']);
} else {
	$remote = "undefined";
}
// log time
$time = clean(date("F jS Y, h:ia", time()));

// sanitize
function clean($string) {
	$string = rtrim($string); 
	$string = ltrim($string); 
	$string = htmlentities($string, ENT_QUOTES); 
	$string = str_replace("\n", "<br>", $string);

	if (get_magic_quotes_gpc()) {
		$string = stripslashes($string);
	} 
	return $string;
}

$message = 
	"TIME: "            . $time    . "\n" . 
	"*404: "            . $request . "\n" . 
	"SITE: "            . $site    . "\n" . 
	"THEME: "           . $theme   . "\n" . 
	"REFERRER: "        . $referer . "\n" . 
	"QUERY STRING: "    . $string  . "\n" . 
	"REMOTE ADDRESS: "  . $address . "\n" . 
	"REMOTE IDENTITY: " . $remote  . "\n" . 
	"USER AGENT: "      . $agent   . "\n\n\n";

mail($email, "404 Alert: " . $blog . " [" . $theme . "]", $message, "From: $email"); 

?>

Solltest du die Email-Benachrichtigung wieder ausschalten wollen, brauchst du nicht zwingend den ganzen Code zu löschen, du kannst auch einfach die Zeile 83 auskommentieren, indem du „//“ davor setzt.

Sollte euch mein Tipp gefallen haben, würde ich mich über Social Shares und Kommentare freuen. :)

Tags

Simon Lüthje

Ich bin der Gründer dieses Blogs und interessiere mich für alles was mit Technik zu tun hat, bin jedoch auch dem Zocken nicht abgeneigt. Geboren wurde ich in Hamburg, wohne nun jedoch in Berlin.

Related Articles

3 Comments

  1. Wie reagiert die Seite dann auf einen 404 Fehler?

    Ich nutze das Plugin 404 Redirected und kann mir dann eine Liste ansehen welche Fehler aufgetreten sind. Die Leute werden aber (hoffe ich immer) auf die nächste ähnliche Seite oder eine Fehlermeldung weitergeleitet.

    In der Fehlerliste ist bei mir immer jede Menge los. Da würde ich viiiele Mails erhalten. Interessanterweise sind die meisten Einträge bei mir Amazonproduktlinks wo ich aber KEINEN EINZIGEN Affiliate Link eingebaut habe… Woher die kommen? Keine Ahnung!

    1. Hallo Stefan,
      es geht nicht um die externen 404-Fehlerseiten, sondern um deine eigenen Seiten. Es geht also nicht um Links zu Amazon.

      Wenn ein Besucher eine auf deinem Webserver nicht mehr existierende Seite aufruft bekommt er einen 404-Fehler und bei diesem bekommst du dann eine Email.

  2. Ich habe es inzwischen probiert. Schönes plugin. Das die 404 fehler seiten sind die bei mir nicht mehr zu erreichen sind war mir klar nur warum da soviel amazon dabei war verstand ich nicht. Mittlerweile weiß ich, dass noch traffic zu irgendwelchen links erzeugt wird als die domain noch geparkt war. Die analysefunktion ist sehr sinnvoll und ich habe schon fehlerhafte interne links dadurch entdeckt. Super sache :)

Schreibe einen Kommentar

Back to top button
Close