Errordocument Musterkonfigurationen: Unterschied zwischen den Versionen
(Errordocumentbeispiel) |
K (Layoutprobleme beseitigt) |
||
Zeile 82: | Zeile 82: | ||
my $error = $_[0]; | my $error = $_[0]; | ||
print "Content-Type: text/html\n\n"; | print "Content-Type: text/html\n\n"; | ||
− | print " | + | print "<h2>Fehler</h2><b>$error</b>\n\n"; |
exit(0); | exit(0); | ||
} | } | ||
Zeile 102: | Zeile 102: | ||
</style> | </style> | ||
</head> | </head> | ||
− | <body background="/backgroundmain.jpg"> | + | <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> | </tr> | ||
− | + | <a href="mailto:webmaster@domain.tld" target="main" name="eMail">eMail an Webmaster</a> | |
</body> | </body> |
Version vom 27. August 2006, 21:32 Uhr
Man kann verschiedene arten des Errordocumenthandings 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>
<a href="mailto:webmaster@domain.tld" target="main" name="eMail">eMail an Webmaster</a>
</body>
</html>
Dies würde man dann mit einem Eintrag in der .htaccess Datei ebenfalls einbinden, man könnte z.B. obige .htaccess-Datei erweitern um
ErrorDocument 403 /cgi-bin/fehler403.cgi
--TomcatMJ 23:14, 27. Aug 2006 (CEST)