Fehler 404 mit .htaccess abfangen (Tutorial)
Eine Website wird öfters umgebaut, Seiten kommen hinzu, andere Seiten werden entfernt oder bekommen eine neue Adresse. Was passiert aber, wenn eine dieser Seiten noch über einen externen Link, zum Beispiel aus einer Suchmaschine oder den Lesezeichen aufgerufen wird? Dann bekommt der Besucher die Standard-Fehlerseite des Webservers für den Fehler "Not Found" angezeigt.
![[Bildschirmfoto]
Not Found - Apache Fehlermeldung (auf einem lokalen Webserver) [Bildschirmfoto]
Not Found - Apache Fehlermeldung (auf einem lokalen Webserver)](img/not_found.png)
Möglich ist auch, das nur eine blanke (leere Seite) ohne Meldung angezeigt wird oder eine vom Provider gestaltete Fehlerseite.
![[Bildschirmfoto]
Eine vom Provider gestaltete Fehlerseite. [Bildschirmfoto]
Eine vom Provider gestaltete Fehlerseite.](img/not_found2.png)
![[Bildschirmfoto]
Eine von mir gestaltete Fehlerseite ;) [Bildschirmfoto]
Eine von mir gestaltete Fehlerseite ;)](img/404_werner-zenk.png)
✔ Eine selbst gestaltete Fehler-Weiterleitungsseite, leitet den Besucher sicher zum Angebot der Webseite (nur auf einem Unix-Server möglich oder die Funktion wird vom Webspace-Provider nicht unterstützt!).
Sie können ganz einfach eine eigene Fehlerseite bauen, auf der Sie schreiben, dass die gesuchten Informationen an anderer Stelle sind und auf diese Seite auch einen Link zur Startseite setzen.
Quelltext: error.php
<!DOCTYPE html> <html> <head> <title> Webseite nicht gefunden! </title> </head> <body> <h2> Die Seite kann nicht angezeigt werden! </h2> <p>Die gewünschte Seite ist zurzeit nicht verfügbar. Möglicherweise sind technische Schwierigkeiten aufgetreten oder die gesuchte Seite wurde entfernt.</p> <ul> <li> <a href="http://www.example.com"> Zur Startseite wechseln </a> <li> <a href="javascript: history.back()"> Eine Seite zurück </a> <li> <a href="mailto:my@example.com"> E-Mail an den Webmaster senden </a> </ul> </body> </html>
Das ist nur ein Beispiel, Sie können die Seite gestalten wie Sie möchten!
.htaccess - Datei
Sie benötigen noch eine weitere Datei mit dem Dateinamen .htaccess
.htaccess.txt
heißt.
In diesem Fall müssen Sie diese noch umbenennen (es hilft wenn die Datei per FTP-Programm (Filezilla, etc.) auf dem Webserver
hochgeladen und dort erst umbenannt wird).
In die Datei schreiben Sie folgende Zeilen:
ErrorDocument 400 http://www.example.com/error.php ErrorDocument 401 http://www.example.com/error.php ErrorDocument 403 http://www.example.com/error.php ErrorDocument 404 http://www.example.com/error.php ErrorDocument 500 http://www.example.com/error.php ErrorDocument 503 http://www.example.com/error.php
Ersetzen Sie http://www.example.com durch den URL Ihrer Homepage.
Wichtig ist die Angabe error.php
Laden Sie die Dateien error.php
und .htaccess
auf Ihren Webspace ins Hauptverzeichnis hoch und rufen sie dann mit Ihrem Browser irgendeine Seite unter Ihrer Domain auf,
die nicht existiert, zum Beispiel:
www.example.com/hallo.php
.
✔ Nun sollte Ihre selbst erstellte Fehlerseite angezeigt werden.
Bei den folgenden Server-Fehlermeldungen wird die Fehlerseite nun angezeigt:
400 Bad Request - Die Anfrage konnte so nicht verstanden werden. Anfrage bitte ändern.
401 Unauthorized - Der Besucher hatte keine Genehmigung bzw. Berechtigung, diesen Zugriff auszuführen.
403 Forbidden - Verbotene Anfrage! Dabei geht es nicht um eine fehlende Genehmigung, sondern die Art des Zugriffes selbst ist strikt verboten!
404 File Not Found - Das angegebene Dokument konnte nicht gefunden werden.
500 Server Error - Interner Fehler im Server. Dies können Hard- oder Softwarefehler sein, die den Server von einer korrekten Abarbeitung abhalten.
503 Out of Resources - Der Server hat wegen Überlastung den Dienst (zeitweise) eingestellt!
Individuelle Fehlerausgabe
Die Ausgabe des Fehlers können Sie, je nachdem welcher Fehler aufgetreten ist, individuell anpassen.
Dazu fügen Sie in der .htaccess
-Datei
folgende Angabe hinzu:
ErrorDocument 400 http://www.example.com/error.php?error=400 ErrorDocument 401 http://www.example.com/error.php?error=401 ErrorDocument 403 http://www.example.com/error.php?error=403 ErrorDocument 404 http://www.example.com/error.php?error=404 ErrorDocument 500 http://www.example.com/error.php?error=500 ErrorDocument 503 http://www.example.com/error.php?error=503
In der Datei error.php
wird dann je nach Fehler, eine andere Nachricht angezeigt.
Zusätzlich wird der Fehlercode zusammen mit dem Datum, dem Referrer und der IP-Adresse in der Text-Datei:
fehler_log.txt
gespeichert.
➤ Diese Datei sollte dann in regelmäßigen Abständen kontrolliert werden, vielleicht kann dann die eine oder andere Ursache der Fehlermeldung behoben werden.
Der Fehler 404 wird auch protokolliert wenn ein Bild auf einer Seite nicht gefunden wurde oder eine externe JavaScript oder CSS-Datei falsch eingebunden wurde.
Quelltext: error.php Ausblenden ❘ Kopieren ❘ Link ❘ Zeilen ❘
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
<!DOCTYPE html>
<html lang="de">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Fehlermeldung</title>
<style>
p.fehler {
background-color: #FFFFDF;
padding: 15px;
}
</style>
</head>
<body>
<?php
if (isset($_GET["error"])) {
// Individuelle Fehlerausgabe
switch ($_GET["error"]) {
case "400":
$meldung = 'Die Anfrage konnte so nicht verstanden werden!';
break;
case "401":
$meldung = 'Sie haben keine Berechtigung, diesen Zugriff auszuführen! Es wurde ein verbotener Zugriff auf dem Webserver ausgeführt.';
break;
case "403":
$meldung = 'Verbotene Anfrage! Es wurde eine Verbotene Anfrage an den Webserver gesendet.';
break;
case "404":
$meldung = 'Die aufgerufene Seite wurde nicht gefunden! Möglicherweise wurde die Seite vom Webmaster entfernt oder es ist ein Fehler am Webserver aufgetreten.';
break;
case "500":
$meldung = 'Interner Fehler am Webserver! Es ist ein Interner Fehler am Webserver aufgetreten.';
break;
case "503":
$meldung = 'Der Webserver ist zur Zeit überlastet! Der Webserver hat wegen Überlastung den Dienst (zeitweise) eingestellt!';
break;
default:
$meldung = 'Fehler am Webserver! Es ist ein Fehler am Webserver aufgetreten.';
}
// Ausgabe
echo '<p id="fehler">' . $meldung . '. — Wir bitten um Entschuldigung!<br>
<a href="javascript:history.back();">Zurück zur vorherigen Seite</a> -
<a href="index.php">Zur Startseite</a>
</p>';
// Zeitzone setzen
date_default_timezone_set("Europe/Berlin");
// Fehlermeldung speichern
$fehler = $_GET["error"] . ", " . date("d.m.Y H:i") . ", " . ($_SERVER["HTTP_REFERER"] ?? '-') . " ," . $_SERVER["REMOTE_ADDR"] . "\n";
$handler = fOpen("fehler_log.txt", "a+");
fWrite($handler, $fehler);
fClose($handler);
}
?>
</body>
</html>
Dateiendung .html über die .htaccess-Datei entfernen
# Für PHP (.php) RewriteCond %{REQUEST_FILENAME}.php -f RewriteRule !.*\.php$ %{REQUEST_FILENAME}.php [QSA,L] #Für HTML (.html) RewriteCond %{REQUEST_FILENAME}.html -f RewriteRule !.*\.html$ %{REQUEST_FILENAME}.html [QSA,L] #Für HTM (.htm) RewriteCond %{REQUEST_FILENAME}.htm -f RewriteRule !.*\.htm$ %{REQUEST_FILENAME}.htm [QSA,L]
Mehr über Htaccess:
» Server Fehlermeldungen und was diese bedeuten
» Htaccess - Passwortschutz für Webseiten - Mit einer .htaccess
Datei und einer
.htpasswd
Passwort-Datei lassen sich bestimmte Verzeichnisse und die darin enthaltenen Dateien vor unerlaubtem Zugriff schützen.
Tipps
- Bilder in einer Datenbank-Tabelle speichern und ausgeben
- Das Hochladen von Bildern in die Datenbank und die Anzeige mit PHP ist relativ einfach. Mit dem folgenden PHP-Code lädt der Benutzer die Bilder hoch, die dann sicher in die Datenbank-Tabelle gelangen.
- Browser-Sprachumschaltung
- Diese Sprachumschaltung zeigt je nach der verwendeten Sprache (deutsch, englisch, ...) im Browser unterschiedlichen Inhalt an.
- Berechnungen mit dem Datum
- Feiertage, Mondphase, Wochentag, Sonnenaufgang und Sonnenuntergang, Julianisches Datum, Sternzeichen, ...
- Zeichenkodierung - Schriftzeichen richtig darstellen
- Oft werden Umlaute, Akzentzeichen oder andere fehlerhafte Zeichen auf der Webseite angezeigt. Auch der Inhalt einer E-Mail, vom Kontaktformular der Website, kann falsche Umlautzeichen enthalten. Beispiele um diese Zeichen in der richtigen Zeichenkodierung darzustellen.
Abonniere meinen RSS-Feed
um über aktuelle Seiten benachrichtigt zu werden.
Countdown-Generator Formular Generator Farbschema PHPMailer Zoom-Funktion Animierte Sternebewertung localStorage Zufallsfarbe Audio-Player Eselsohren Regenbogen Text Silbentrennung Mausrad Metadaten Zeichenkodierung Diashow Modal-Fenster Lokaler Webserver Counter Zeit-Differenz Zugriffsrechte SQLite Keyframes Metall-Effekt Generator Operatoren