E-Mail-Benachrichtigung von 404-Fehlern mit webEdition
In webEdition ist es möglich in den Einstellungen eine Fehlerseite für 404 Fehler (Seite nicht gefunden) anzugeben. Bei dieser Fehlerseite handelt es sich um ein webEdition internes Dokument, wodurch sich alle Möglichkeiten der Template-Programmierung (webEdition Tags und PHP-Code) nutzen lassen. Ein sinnvolles Anwendungsbeispiel ist die automatische Benachrichtigung per E-Mail, wenn ein URL-Aufruf zu einem 404 Fehler führt.
404 Fehlerseite erstellen
Zunächst erstellen wir eine neue Vorlage über Datei > Neu > Vorlage. Diese Vorlage speichern wir mit folgendem Code als 404.tmpl ab.
<?php
/**
* Original by http://wp-mix.com/wordpress-404-email-alerts/
*/
$_404SiteName = "domain.tld"; //default
$_404Referer = "undefined";
$_404Request = "undefined";
$_404Querystring = "undefined";
$_404RemoteAddress = "undefined";
$_404RemoteIdent = "undefined";
$_404UserAgent = "undefined";
// 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;
}
// site info
if(isset($_SERVER['HTTP_HOST'])) $_404SiteName = clean($_SERVER['HTTP_HOST']);
// referrer
if(isset($_SERVER['HTTP_REFERER'])) $_404Referer = clean($_SERVER['HTTP_REFERER']);
// request URI
if(isset($_SERVER['REQUEST_URI']) && isset($_SERVER["HTTP_HOST"])) $_404Request = clean('http://' . $_SERVER["HTTP_HOST"] . $_SERVER["REQUEST_URI"]);
// query string
if(isset($_SERVER['QUERY_STRING'])) $_404Querystring = clean($_SERVER['QUERY_STRING']);
// IP address
if(isset($_SERVER['REMOTE_ADDR'])) $_404RemoteAddress = clean($_SERVER['REMOTE_ADDR']);
// user agent
if(isset($_SERVER['HTTP_USER_AGENT'])) $_404UserAgent = clean($_SERVER['HTTP_USER_AGENT']);
// identity
if(isset($_SERVER['REMOTE_IDENT'])) $_404RemoteIdent = clean($_SERVER['REMOTE_IDENT']);
// log time
$_404Time = clean(date("F jS Y, h:ia", time()));
$_404message =
'TIME: ' . $_404Time . "\n" .
'*404: ' . $_404Request . "\n" .
'SITE: ' . $_404SiteName . "\n" .
'REFERRER: ' . $_404Referer . "\n" .
'QUERY STRING: ' . $_404Querystring . "\n" .
'REMOTE ADDRESS: ' . $_404RemoteAddress . "\n" .
'REMOTE IDENTITY: ' . $_404RemoteIdent . "\n" .
'USER AGENT: ' . $_404UserAgent . "\n\n\n";
//Ausgabe ins webEdition Error-Log mit optionalen E-Mail-Versand
t_e('error',$_404message);
?>
Als nächstes erstellen wir ein neues webEdition Dokument auf Basis der zuvor erstellen Vorlage. Dazu rufen wir Datei > Neu > webEdition-Seite > Leere Seite auf. Als Dateinamen geben wir 404 ein. Bei Vorlage wählen wir das als 404.tmpl gespeicherte Template aus und aktivieren die Checkbox Seite dynamisch generieren. Nun veröffentlichen wir das Dokument.
Fehlerseite in den Einstellungen aktivieren
Jetzt müssen wir das eben erstellte webEdition Dokument als Fehlerseite in den Einstellungen angeben. Dazu öffnen wir die Einstellungen über Extras > Einstellungen > Allgemein und wechseln in den Reiter SEO-Links. Am Ende finden wir dann die Einstellung Fehlerseite für nicht existierende Objekte, wo wir nun das webEdition Dokument 404.php zuweisen.
Falls noch nicht vorhanden, erstellen wir außerdem eine .htaccess Datei (über Datei > Neu > Sonstige > .htaccess-Datei) mit folgendem Inhalt und speichern sie direkt im Document-Root ab. Mit der .htaccess Datei weisen wir den Server an, alle URL-Aufrufe, die nicht auf ein Verzeichnis oder eine Datei verweisen an webEdition weiterzuleiten – auch im 404 Fehlerfall.
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /webEdition/redirectSEOurls.php [L]
ErrorDocument 404 /webEdition/redirectSEOurls.php
404 Fehler ins webEdition Error-Log und/oder per E-Mail versenden
An dieser Stelle sind wir bereits mit der Implementierung fertig. Wenn der PHP-Code 1-zu-1 übernommen wurde, werden 404 Fehler über das webEdition Error handling verarbeitet. Dies geschieht über die Funktion t_e() und setzt voraus, dass die webEdition Fehlerbehandlung in den Einstellungen unter Extras > Einstellungen > Allgemein im Reiter Fehlerbehandlung aktivert wurde (siehe Abbildung). Dabei lässt sich festlegen, ob die Fehler im Error-Log gespeichert und/oder per E-Mail versandt werden sollen.
- Einsatz von PHP in webEdition
- <we:block> und <we:listview>: Alternierende CSS-Klassen mit <we:ifPosition>
- <we:block> und <we:listview>: Den Inhalt eines Blocks in einer Listview ausgeben
- <we:block>: Nummerieren der Wiederholungen mit <we:position>
- Allgemeine Variablen und Funktionen
- Attribute in HTML-Tags ausspielen
- Auf interne Variablen des aktuellen webEdition-Dokuments zugreifen
- Datenbank-Funktionen
- Externe JS-Plugins und andere Bibliotheken komfortabel in webEdition importieren
- Fehlerseite für limitierte Logins Multidomain-fähig machen
- Google Sitemap in webEdition erstellen
- Große Dateien – wohin damit?
- Innerhalb einer listview type="search" die ID eines Objektes anzeigen
- Liste der Tastaturkürzel
- Massenoperationen für webEdition Objekte
- Mit webEdition automatisiert Thumbnails erzeugen
- Mit webEdition-Thumbnails responsive Background-Images gestalten
- Pflichtfelder in Dokumenten
- PHP-Klassen und PHP-Libraries einfügen
- Referenzen für PHP, JavaScript und CSS in die webEdition-Sidebar laden
- SEO-optimierte Image-News-Slider mit webEditon und bxSlider
- SEO-URLs, so bekommt ihr sie „klein“
- Tipps und Rezepte
- Vorlagen-Quelltext aus DB anzeigen
- we:comment mehr als nur Kommentare
- webEdition IDs in CSS und JS Dateien einbinden
- webEdition Kategorien
- webEdition Tags statt PHP-Code
- Wie funktionieren eigentlich webEdition Objekte?
- Wie kann ich als Entwickler die Code-Qualität von webEdition-Projekten einschätzen?