von Thomas Salvador.
Im Artikel "Eigene Fehlermeldungen und was man mit ihnen anfangen kann" hatte Friedemann Lindenthal gezeigt, wie man die Standardfehlermeldungen des Servers durch beliebig designte Dateien ersetzen kann. Damit war es nicht nur möglich, weitere Erklärungen zu liefern, sondern insbesondere die Seiten auch völlig an das eigene Sitedesign anzupassen. Friedemann ließ blanke HTML-Dateien darstellen, wies jedoch bereits darauf hin, dass dies keineswegs notwendig oder irgendwie erforderlich sei.
Wir verfolgen im zweiten Teil daher einen anderen Ansatz und lassen bei Fehlern ein Programm ausführen.
Arbeitet man mit HTML-Dateien, so hat das Vor- und Nachteile. Der klare Vorteil sind eigene Dateien. Der Nachteil ist, dass es keinen Status 404 "Datei nicht gefunden" mehr gibt, da nunmehr immer eine Datei geliefert werden kann, entweder die angeforderte oder aber die Fehlerdatei.
Dies führt dazu, dass die übliche Übersicht der Dateien, die angefordert wurden, aber nicht lieferbar waren, verschwindet. Siteanalysen werden dadurch erschwert.
Man kann mit der HTML-Variante arbeiten, benötigt dann aber einen Logfile-Analysator, der einem die Frage "Woher kamen die Links auf meine Fehlerdatei?" vernünftig beantworten kann. Diese Antwort besteht aus Dateien mit vielleicht einem (oder mehreren) ungültigen Link(s). Zumindest vielleicht. Technische Störungen oder Überlastung lassen auch vorhandene Seiten 404 melden, so dass der einfache Neuversuch die gewünschte Seite manchmal erscheinen lässt.
Man verwendet statt der HTML-Variante ein Programm, welches die Fehlerdaten in einem separaten LogFile protokolliert. Diesen Ansatz werden wir verfolgen.
wird in Perl formuliert und kommuniziert über das CGI. Zunächst der Source:
#!/usr/bin/perl
## konfiguration ------------------------------------------
$mailerror=1; # soll der fehler gemailt werden?
# 0 - nein, 1 - ja
$mailaddy="ihremail\@example.org";
$logerror=1; # soll der fehler gelogged werden?
# 0 - nein, 1 - ja
$logfile="./errors.log";
## das mailprogram ----------------------------------------
$MAILPROG="/usr/lib/sendmail";
## die antwortseiten --------------------------------------
$response="http://www.example.org/fehler/";
$fileext=".html";
##################################################################
## nichts mehr zu aendern.
$fehlerno = $ENV{'QUERY_STRING'};
$referer = $ENV{'HTTP_REFERER'};
$requested= $ENV{'REQUEST_URI'};
if (!($referer eq "")) {
if ($mailerror==1) {
&mailit();
}
if ($logerror==1) {
&logit();
}
}
print "Location: $response$fehlerno$fileext\n\n";
sub mailit() {
open (SM, "| $MAILPROG -t")|| die ("kann $MAILPROG nicht oeffnen");
print SM "From: $mailaddy\n";
print SM "To: $mailaddy\n";
print SM "Subject: Fehler $fehlerno auf Site\n\n";
print SM "Fehler: $fehlerno\n";
print SM " von: $referer\n";
print SM " nach: $requested\n";
close (SM);
}
sub logit() {
open (F, ">>$logfile") || return;
print F "$fehlerno|$referer|$requested\n";
close (F);
}
| Teil 2 |
