Betriebssysteme, Programme & Web

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

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 Bad Segeberg.

Ähnliche Artikel

Schreibe einen Kommentar

Schaltfläche "Zurück zum Anfang"