Hier eine kleine Anleitung, wie man benutzerdefinierte Fehlerseiten im Apache einrichtet.
Voraussetzung
- Ubuntu 20.04
- Apache ist installiert und wird ausgeführt
Erstellen der benutzerdefinierten Fehlerseite
Zuerst müssen wir die benutzerdefinierte Fehlerseite erstellen. Zu Testzwecken werden wir eine Beispiel-Fehlerseite erstellen, um den 404-Fehler abzufangen.
Wir verwenden SSH, um sich mit Ihrem Server zu verbinden, gehen zum Hauptverzeichnis der Website und Erstellen mit folgendem Befehl eine neue Seite namens my-404.html:
sudo nano my-404.htmlCode-Sprache: CSS (css)
und fügen das Folgende in diese Datei ein:
<html>
<head>
<title>My Custom 404 Error Page</title>
</head>
<body>
<p>Whoops, page not found! Sorry about that.</p>
</body>
</html>Code-Sprache: HTML, XML (xml)
Speichern ( STRG + S ) und beenden ( STRG + X)
Wir können die Datei ansehen, indem Wir auf example.com/my-404.html gehen, um sicherzustellen, dass sie korrekt angezeigt wird.
Benutzerdefinierten Fehlerseite einbinden
Um Apache anzuweisen, eine benutzerdefinierte Fehlerseite zu verwenden, müssen wir eine ErrorDocument-Anweisung dem VirtualHost hinzufügen. Die Syntax für diese Direktive lautet:
ErrorDocument 404 [path to file]
# in unserem Fall
ErrorDocument 404 /my-404.html
# möglich wäre auch eune URL oder nur ein Text
ErrorDocument 404 http://example.com/notfound.html
ErrorDocument 404 "Datei nicht gefunden"Code-Sprache: PHP (php)
Wir öffnen also die Config-Datei für unsere Website:
sudo nano /etc/apache2/sites-available/example.com.conf
und fügen die Direktive für das ErrorDocument hinzu
<VirtualHost *:80>
ServerName example.com
ErrorDocument 404 /my-404.html
<Directory "/var/www/example.com/html">
AllowOverride All
</Directory>
</VirtualHost>Code-Sprache: HTML, XML (xml)
Speichern ( STRG + S ) und beenden ( STRG + X)
Danach müssen wir noch den Apache-Server neu starten, damit die Änderungen wirksam werden.
sudo services apache2 restart
Jetzt Testen wir mal ob alles geklappt hat und rufen eine URL auf, die es nicht gibt wie z.B. example.com/test
Die Direktive könnte man auch in die .htaccess schreiben.
Andere HTTP-Fehlercodes
Wir können nach dem selben Prinzip, noch weitere Apache-Fehlermeldungen erstellen. Sinnvoll wären noch:
- 400 – Ungültige Anforderung
- 401 – Nicht autorisiert
- 403 – keine Lese-Rechte
- 410 – angeforderte Ressource nicht mehr verfügbar
- 413 – Nutzlast zu groß
- 500 – interner Serverfehler
Fehlerseiten können für alle 400x- und 500x-Fehlercodes konfiguriert werden. Eine vollständige Liste der Fehlercodes finden wir auf Wikipedia.