So konfigurieren Sie Apache für die Verwendung benutzerdefinierter Fehlerseiten unter CentOS 7

Einführung

Apache ist der beliebteste Webserver der Welt. Es ist gut unterstützt, funktionsreich und flexibel. Beim Entwerfen Ihrer Webseiten ist es häufig hilfreich, jeden Inhalt anzupassen, den Ihre Benutzer sehen. Dies schließt Fehlerseiten für den Fall ein, dass Inhalte angefordert werden, die nicht verfügbar sind. In diesem Handbuch wird gezeigt, wie Sie Apache für die Verwendung benutzerdefinierter Fehlerseiten unter CentOS 7 konfigurieren.

Voraussetzungen

Um mit diesem Handbuch beginnen zu können, benötigen Sie einen Benutzer ohne Rootberechtigung mit den Rechten "+ sudo +". Sie können einen Benutzer dieses Typs einrichten, indem Sie unserer initial setup guide for CentOS 7 folgen. Außerdem muss Apache auf Ihrem System installiert sein. Erfahren Sie, wie Sie dies einrichten, indem Sie dem ersten Schritt von https://www.digitalocean.com/community/tutorials/how-to-install-linux-apache-mysql-php-lamp-stack-on-centos-7 [folgen. dieser Leitfaden].

Erstellen Ihrer benutzerdefinierten Fehlerseiten

Zu Demonstrationszwecken erstellen wir einige benutzerdefinierte Fehlerseiten, Ihre benutzerdefinierten Seiten unterscheiden sich jedoch offensichtlich.

Wir legen unsere benutzerdefinierten Fehlerseiten im Verzeichnis "+ / var / www / html " ab, in dem die Apache-Installation von CentOS das Standard-Stammverzeichnis für Dokumente festlegt. Wir erstellen eine Seite für 404-Fehler mit dem Namen " custom_404.html " und eine Seite für allgemeine 500-Level-Fehler mit dem Namen " custom_50x.html +". Sie können die folgenden Zeilen verwenden, wenn Sie nur testen. Andernfalls platzieren Sie Ihre eigenen Inhalte an folgenden Orten:

echo "<h1 style='color:red'>Error 404: Not found :-(</h1>" | sudo tee /var/www/html/custom_404.html
echo "<p>I have no idea where that file is, sorry.  Are you sure you typed in the correct URL?</p>" | sudo tee -a /var/www/html/custom_404.html
echo "<h1>Oops! Something went wrong...</h1>" | sudo tee /var/www/html/custom_50x.html
echo "<p>We seem to be having some technical difficulties. Hang tight.</p>" | sudo tee -a /var/www/html/custom_50x.html

Wir haben jetzt zwei benutzerdefinierte Fehlerseiten, die wir bedienen können, wenn Clientanforderungen zu unterschiedlichen Fehlern führen.

Konfigurieren von Apache zur Verwendung Ihrer Fehlerseiten

Jetzt müssen wir Apache nur noch mitteilen, dass diese Seiten verwendet werden sollen, wenn die richtigen Fehlerbedingungen auftreten. Wir können eine neue Konfigurationsdatei im Verzeichnis "+ / etc / httpd / conf.d " erstellen, in der Apache Konfigurations-Snippets liest. Wir rufen die neue Datei " custom_errors.conf +" auf:

sudo nano /etc/httpd/conf.d/

Wir können Apache jetzt auf unsere benutzerdefinierten Fehlerseiten verweisen.

Direkte Fehler auf den richtigen benutzerdefinierten Seiten

Wir können die Direktive "+ ErrorDocument +" verwenden, um jeden Fehlertyp einer zugeordneten Fehlerseite zuzuordnen. Grundsätzlich müssen wir nur den http-Statuscode für jeden Fehler der Seite zuordnen, die wir bedienen möchten, wenn er auftritt.

In unserem Beispiel sieht die Fehlerzuordnung folgendermaßen aus:

/etc/httpd/conf.d/custom_errors.conf

Diese Änderung allein reicht aus, um die benutzerdefinierten Fehlerseiten zu bedienen, wenn die angegebenen Fehler auftreten.

Wir werden jedoch einen zusätzlichen Satz von Konfigurationen hinzufügen, damit unsere Fehlerseiten nicht direkt von Clients angefordert werden können. Dies kann einige seltsame Situationen verhindern, in denen der Text einer Seite auf einen Fehler verweist, der http-Status jedoch "200" lautet (was auf eine erfolgreiche Anforderung hinweist).

Antworten Sie mit 404, wenn Fehlerseiten direkt angefordert werden

Um dieses Verhalten zu implementieren, müssen wir für jede unserer benutzerdefinierten Seiten einen "+ Files " - Block hinzufügen. Im Inneren können wir testen, ob die Umgebungsvariable ` REDIRECT_STATUS ` gesetzt ist. Dies sollte nur gesetzt werden, wenn die Direktive " ErrorDocument +" eine Anfrage verarbeitet. Wenn die Umgebungsvariable leer ist, wird ein 404-Fehler ausgegeben:

/etc/httpd/conf.d/custom_errors.conf

ErrorDocument 404 /custom_404.html
ErrorDocument 500 /custom_50x.html
ErrorDocument 502 /custom_50x.html
ErrorDocument 503 /custom_50x.html
ErrorDocument 504 /custom_50x.html

Wenn die Fehlerseiten direkt von Clients angefordert werden, tritt ein 404-Fehler auf, da nicht die richtige Umgebungsvariable festgelegt ist.

Richten Sie das Testen auf 500-Level-Fehler ein

Wir können leicht 404-Fehler erzeugen, um unsere Konfiguration zu testen, indem wir nicht vorhandene Inhalte anfordern. Um die 500-Level-Fehler zu testen, müssen wir einen Dummy-Proxy-Pass einrichten, damit wir sicherstellen können, dass die richtigen Seiten zurückgegeben werden.

Fügen Sie eine "+ ProxyPass " - Direktive am Ende der Datei hinzu. Senden Sie Anforderungen für " / proxytest +" an Port 9000 auf dem lokalen Computer (auf dem kein Dienst ausgeführt wird):

/etc/httpd/conf.d/custom_errors.conf

ErrorDocument 404 /custom_404.html
ErrorDocument 500 /custom_50x.html
ErrorDocument 502 /custom_50x.html
ErrorDocument 503 /custom_50x.html
ErrorDocument 504 /custom_50x.html

<Files "custom_404.html">
   <If "-z %{ENV:REDIRECT_STATUS}">
       RedirectMatch 404 ^/custom_404.html$
   </If>
</Files>

<Files "custom_50x.html">
   <If "-z %{ENV:REDIRECT_STATUS}">
       RedirectMatch 404 ^/custom_50x.html$
   </If>
</Files>

Speichern und schließen Sie die Datei, wenn Sie fertig sind.

Starten Sie Apache neu und testen Sie Ihre Seiten

Testen Sie Ihre Konfigurationsdatei auf Syntaxfehler, indem Sie Folgendes eingeben:

sudo apachectl configtest

Beheben Sie alle gemeldeten Probleme. Wenn Ihre Dateien keine Syntaxfehler enthalten, starten Sie Apache neu, indem Sie Folgendes eingeben:

sudo systemctl restart httpd

Wenn Sie nun die Domain oder IP-Adresse Ihres Servers aufrufen und eine nicht vorhandene Datei anfordern, sollte die von uns eingerichtete 404-Seite angezeigt werden:

http:///thiswillerror

Wenn Sie zu dem Ort gehen, den wir für den Dummy-Proxy-Pass eingerichtet haben, wird auf unserer benutzerdefinierten Seite mit 500 Stufen der Fehler "503 Service nicht verfügbar" angezeigt:

http:///proxytest

Sie können jetzt zurückgehen und die gefälschte Proxy-Pass-Zeile aus Ihrer Apache-Konfiguration entfernen.

Fazit

Sie sollten jetzt benutzerdefinierte Fehlerseiten für Ihre Site bereitstellen. Dies ist eine einfache Möglichkeit, die Benutzererfahrung zu personalisieren, auch wenn Probleme auftreten. Ein Vorschlag für diese Seiten ist die Angabe von Links zu Orten, an denen sie Hilfe oder weitere Informationen erhalten können. Wenn Sie dies tun, stellen Sie sicher, dass auf die Verbindungsziele zugegriffen werden kann, auch wenn die zugehörigen Fehler auftreten.