Eigene Wartungsseite schalten

Manchmal kommt man nicht umhin, komplexere Wartungsarbeiten direkt auf den Produktivsystemen vorzunehmen.
Viele Content Management- und Shop-Systeme bringen dafür einen Wartungsmodus mit, den man einfach aktivieren kann. Alle Aufrufe, die nicht von der eigenen IP-Adresse kommen, sehen dann nur eine Wartungsseite, man selbst kann die Webseite ganz normal bedienen.

Bietet das im Einsatz befindliche System keine Möglichkeit einen extra Wartungsmodus zu aktivieren, so kann man sich mit ein paar Einträgen in der .htaccess-Datei aber leicht selbst helfen und eine eigene Wartungsseite definieren.

Wartungsseite mit einer freigeschalteten IP-Adresse

Arbeitet man alleine an der Webseite, reicht es die eigene IP-Adresse freizuschalten. Diese erfahren Sie hier.

<IfModule mod_rewrite.c>
 RewriteEngine on
 RewriteCond %{REMOTE_ADDR} !^123\.456\.789\.012
 RewriteCond %{REQUEST_URI} !/wartung.php$ [NC]
 RewriteCond %{REQUEST_URI} !\.(jpe?g?|png|gif) [NC]
 RewriteRule .* /wartung.htm [R=302,L]
</IfModule>

Die IP-Adresse 123.456.789.012 muss natürlich dann durch die entsprechend korrekte IP-Adresse ersetzt werden.

Wartungsseite mit mehreren freigeschalteten IP-Adressen

Arbeiten mehrere Personen von unterschiedlichen Internetanschlüssen aus an der Webseite, bietet es sich an, alle IP-Adressen freizuschalten, die Zugriff auf die Webseite benötigen.
Dies lässt sich mit folgenden Einträgen realisieren:

order deny,allow
deny from all
allow from 123.456.789.0
allow from 123.456.789.0
ErrorDocument 403 /wartung.htm

order allow,deny
allow from all

Beispiel einer Wartungsseite

Da für fremde IP-Adressen der Zugriff auf jegliche Ressourcen außer der angegebenen Wartungsseite untersagt ist, müssen Sie bei der Erstellung der HTML-Seite darauf achten, keine externen Ressourcen wie CCS-Dateien oder Bilder zu referenzierten. Diese könnten im Ernstfall dann nicht geladen/angezeigt werden.

Ich habe deshalb schon mal eine beispielhafte Wartungsseite erstellt, die Sie gerne benutzen und nach Ihren Wünschen anpassen können.

www wegrationalisieren

Streng genommen handelt es sich beim Zusatz „www“ um eine reguläre Third-Level-Domain.
Ihre weite Verbreitung ist historisch bedingt und technisch nicht zur reibungslosen Funktion einer Webseite notwendig, daher kann auch getrost auf den Zusatz verzichtet werden.

Um alle Aufrufe mit „www“ auf die Domain ohne die Subdomain umzuleiten, reichen diese fünf Zeilen aus:

RewriteEngine on
RewriteCond %{HTTP_HOST} ^www\.
RewriteCond %{HTTPS}s ^on(s)|off
RewriteCond http%1://%{HTTP_HOST} ^(https?://)(www\.)?(.+)$
RewriteRule ^ %1%3%{REQUEST_URI} [R=301,L]

Natürlich funktioniert es auch umgekehrt, um das „www“ immer zu erzwingen.

www erzwingen

Streng genommen handelt es sich beim Zusatz „www“ um eine reguläre Third-Level-Domain.
Ihre weite Verbreitung ist historisch bedingt und technisch nicht zur reibungslosen Funktion einer Webseite notwendig, viele Menschen finden www.personenname.de aber schöner für das Auge, als nur personenname.de im Browser stehen zu haben.

Unsere Webserver reagieren daher per default auch auf Aufrufe per www-Subdomain, auch wenn diese nicht separat eingerichtet wurde.

Um auch Aufrufe ohne „www“ umzuleiten, reichen diese fünf Zeilen in der .htaccess-Datei:

RewriteEngine on
RewriteCond %{HTTP_HOST} !^$
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteCond %{HTTPS}s ^on(s)|
RewriteRule ^ http%1://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

Natürlich funktioniert das auch umgekehrt, um das „www“ immer zu vermeiden.

HTTPS als Standard

Sobald die Webseite mit einem SSL-Zertifikat ausgestattet ist, sollte man dieses natürlich auch nutzen.
Wenn das eingesetzte Content Management oder Shop-System nicht die Möglichkeit bietet, alle Aufrufe auf HTTPS umzuleiten, helfen diese Zeilen in der .htaccess-Datei dabei, dass die Webseite ausschließlich verschlüsselt aufgerufen werden kann:

RewriteEngine on
RewriteCond %{HTTPS} !on
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}

Etwaig mit übergebene Parameter werden dabei mit übertragen.

UTF-8 Encoding als Standard definieren

Generell gilt die UTF-8- Zeichenkodierung als Standard und bietet über mehrere Sprachen hinweg die größte Flexibilität.

Sollten sich in komplexen Systemen manchmal anders kodierte Dateien in die Webseite mogeln, sorgen diese für eine fehlerhafte Zeichendarstellung. Die verursachenden Dateien ausfindig zu machen, kann schwierig werden.

Als schnelle Abhilfe lassen sich in der .htaccess-Datei mit den folgenden Zeilen standardmäßig Dateien UTF-8-kodiert ausgeben:

# UTF-8 Encoding für alle Inhalte, die text/plain oder text/html sind:
AddDefaultCharset utf-8

# UTF-8 Encoding nur für bestimmte Dateitypen aktivieren:
AddCharset utf-8 .atom .css .js .json .rss .vtt .xml

PHP Errorlogging selektiv aktivieren

Insbesondere bei der Entwicklung ist es vorteilhaft, das Errorlogging von PHP zu aktivieren.
Auf reinen Entwicklungssystemen erfolgt die Ausgabe der Fehler zumeist direkt im Browserfenster.

Wenn man jedoch auf Produktivsystemen arbeitet und die Fehlermeldungen anderen Webseitenbesuchern nicht anzeigen lassen möchte, hat man die Möglichkeit, die Fehler auch in eine Datei umzulenken.

Mit den folgenden Einstellungen in der .htaccess-Datei werden auftretende PHP-Fehlermeldungen direkt in eine Datei auf dem Server geschrieben.

# Dem Nutzer keine Fehler anzeigen
  php_flag display_startup_errors off
  php_flag display_errors off
  php_flag html_errors off
# Die Fehler in eine Datei schreiben
  php_flag log_errors on
  php_value error_log /pfad/zum/phperror.log

Der /pfad/zum/phperror.log muss natürlich entsprechend angepasst werden.

Wichtig: Die Datei muss bereits existieren und beschreibbar sein!