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)
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.
[Bildschirmfoto]
 Eine von mir gestaltete Fehlerseite ;)
Eine von mir 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.php AusblendenKopierenLinkZeilen

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 '. &mdash; 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.