Errordocument Musterkonfigurationen

Aus Linupedia
Wechseln zu: Navigation, Suche

Man kann verschiedene Arten des Errordocumenthandlings konfigurieren. Die einfachste Variante wäre ein Eintrag der folgenden Art in der .htaccess Datei:

ErrorDocument 404 /index.html
ErrorDocument 500 /timeout.html

Es geht aber auch mit CGI-Scripten auf die mann statt der HTML-Files verweisen kann. Hier ein kleines perlscript welches ich selbst in diversen Abwandlungen nutze:

/srv/www/htdocs/cgi-bin/Errordocument403.cgi

#!/usr/bin/perl
# (c) 2001 by Tom Meierjürgen tomcatmj@mehlbox-system.de
# Licenced: Free for noncommercial Use without removing Header and Authorname
# Analyzing 403 Errors might be usefull for preventing further Hacktrials from any Users or Scripts
$logpath    = '/srv/www/logs/Error403log.txt';
$mailprog   = '/usr/sbin/sendmail';
$email      = 'mail@domain.tld';
$send_env   = 'yes';
$betreff ="Fehler 403 auf www.domain.tld";

if ($email and $mailprog)
    {
    open(MAIL,"|$mailprog -t") or error("Mailer kann nicht geöfnet werden: $!");
    print MAIL "To: $email\n";
    print MAIL "From: $email (mehlbox.homeip.net)\n";
    print MAIL "Subject: $betreff \n";
    print MAIL "X-Priority: 1 (Highest)\n\n";
    print MAIL "Folgende URL wurde aufgerufen: $ENV{'REDIRECT_URL'}\n";
    print MAIL "by $ENV{'REMOTE_HOST'}.\n\n";
    if ($ENV{'HTTP_REFERER'})
        {
        @terms = split(/\//,$ENV{'HTTP_REFERER'});
        print MAIL "Der Versuch kam von: $ENV{'HTTP_REFERER'}. ";
        print MAIL "Informiere den Administrator von: $terms[0]//$terms[2].\n\n";
        }
    else
        {print MAIL "Es wurde keine Herkunfts-URL ermittelt.\n\n";} 

    if ($send_env)
        {
        print MAIL "Details follow:\n\n";
        foreach $key (sort keys %ENV)
            {print MAIL "$key: $ENV{$key}\n";}
        }
    close(MAIL) or error("Mail kann nicht gesendet werden: $? $!");
    } 

# Als zweites Log-Datei fortschreiben 

if ($logpath)
    {
    unless (-e $logpath) {error("$logpath exisitiert nicht.")}
    unless (-W $logpath) {error("$logpath kann nicht beschrieben werden.")} 

    ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday) = localtime(time);
    $mon++;
    if (length($mday) == 1)  {$mday = 0 . $mday}
    if (length($mon)  == 1)  {$mon = 0 . $mon}
    if (length($hour) == 1)  {$hour = 0 . $hour}
    if (length($min)  == 1)  {$min = 0 . $min}
    $year = $year + 1900;
    $dt = "$year$mon$mday.$hour$min";

    $line = "$dt\t $ENV{'REDIRECT_URL'}\t $ENV{'HTTP_REFERER'}\t $ENV{'REMOTE_HOST'}\n";

    open(FILE, ">>$logpath") or error("Kann $logpath nicht öfnen zum anhängen: $!");
    flock(FILE,2) or error("Sperrfehler bei $logpath: $!");
    print FILE $line;
    close(FILE);
    }

# So, und nun ein wenig User-output :-) die HTML-Befehle können hinter _END_  geschrieben werden

print "Content-Type: text/html\n\n";
while () {print}

sub error
    {
    my $error = $_[0];
    print "Content-Type: text/html\n\n";
    print "<h2>Fehler</h2>$error\n\n";
    exit(0);
    } 


<html>
<head>
        <title>Gibt nix! :-(</title>
        <style>
                body {
                      background-image:url{/backgroundmain.jpg};
                      background-repeat:no-repeat;
                      background-attachment:fixed;
                      padding:0px;
                     }
                A:visited {text-decoration: none; color:darkblue; font-family:Arial;  font-weight:bold;}
                A:hover {text-decoration:bold; color:blue; font-family:Arial; font-weight:bold;}
                A:link {text-decoration:none; color:Gray; font-family:Arial; font-weight:bold;}
        </style>
</head>
<body background="/backgroundmain.jpg"><h1><font face="Arial" size="4">
Ohne explizite  Zugriffserlaubnis ist diese Seite nicht verfügbar.... 
Falsches Passwort eingegeben  vielleicht ?
</font></h1> 
<A HREF="javascript:history.back()">Zurück</a></td>
        </tr>

<a href="mailto:webmaster@domain.tld" target="main" name="eMail">eMail an Webmaster</a>

</body>
</html>

</code>

Dies würde man dann mit einem Eintrag in der .htaccess Datei ebenfalls einbinden, man könnte z.B. obige .htaccess-Datei erweitern um

<code>

ErrorDocument 403 /cgi-bin/fehler403.cgi

</code>

--TomcatMJ 23:14, 27. Aug 2006 (CEST)


Zurück zur Musterkonfigurationsübersicht
Zurück zur LAMP-Übersicht
Zurück zu den Perlscripten
Zurück zu den CGI-Scripten