Fehler 404 mit .htaccess abfangen

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)
Not Found - Apache Fehlermeldung (auf einem lokalen Webserver)

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.
Eine vom Provider gestaltete Fehlerseite.

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

Beachten Sie die Kleinschreibung und den Punkt am Namensanfang! Standardmäßig wird die Datei als .txt-Datei gespeichert, so dass diese dann .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.phpKopierenAusblendenZeilen

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
<!DOCTYPE html>
<html lang="de">
 <head>
  <meta charset="UTF-8">
  <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 '. &mdash; Wir bitten um Entschuldigung!<br>';
 echo 
'<a href="javascript:history.back();">Zurück zur vorherigen Seite</a> - ';
 echo 
'<a href="index.php">Zur Startseite</a></p>';

 
// 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>

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

Lokalen Webserver einrichten und verwenden
Um PHP-Scripte auszuführen benötigt man einen Webserver. Um nun nicht jede Datei zum testen erst per FTP auf seinen Webserver zu laden ist es sinnvoll, sich lokal auf dem Rechner einen sog. lokalen Webserver zu installieren.
Mit dem PHPMailer E-Mails sicher versenden
Damit E-Mails sicher beim Empfänger ankommen und nicht irgendwo anders landen (Spamordner) oder sogar vom Provider abgelehnt werden nutzt man am besten eine fertige Mailer-Klasse wie den „PHPMailer”.
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.
Diese Schlagwörter könnten Sie interessieren:
Audio-Player Dateibrowser Webseitenschutz Berechnungen Rahmen Zugriffsrechte Counter Sitemaps-Protokoll SQLite Gästebuch Zebra-Tabelle localStorage Mehrfachauswahl JSON Metadaten Zoom-Funktion Operatoren Favicon Silbentrennung Sicherheit