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
- Sitemaps-Protokoll für Suchmaschinen automatisch erstellen
- Sorgen Sie dafür, dass die Nutzer auf einen größeren Teil Ihrer Website aufmerksam werden mit einem „Sitemaps-Protokoll”. Dies stellt eine einfache Möglichkeit für Webmaster dar, Suchmaschinen Seiten auf Ihrer Website zu melden, die zum durchsuchen verfügbar sind.
- RSS-Feed selbst erstellen
- Ein RSS-Feed lässt sich, mit wenigen Codezeilen, einfach selbst erstellen. Diese stellen in erster Linie ein vorzügliches Instrument dar, den Bekanntheitsgrad einer Website zu steigern.
- Spalten einer Tabelle dynamisch ändern
- Manchmal möchte man die Spalten einer Tabelle dynamisch ändern so das diese individuell angezeigt werden können, wie das geht wird hier an einem Beispiel demonstriert.
- Verkettete Auswahllisten dynamisch aus einer DB-Tabelle generieren
- Dieses Beispiel zeigt, wie man eine HTML-Auswahlliste (Drop-Down-Liste) dynamisch generiert, die auf den Werten einer Spalte in einer Datenbank-Tabelle beruht.
Abonniere meinen RSS-Feed
um über aktuelle Seiten benachrichtigt zu werden.
Sitemaps-Protokoll Responsiv Neon Buchstaben Marquee Silbentrennung Inhaltsverzeichnis SQLite Zeichnen Floodsperre Chatroom AES Countdown-Generator Farbschema Suchmaschine Animation Passwortschutz Mauszeiger JSON Kommentar-Box Metall-Effekt Generator Mnemonisches Passwort Formular befüllen Zebra-Tabelle Sprachumschaltung Geolocation API