Konfigurationsmöglichkeiten für Ihre Website
Auf den Punkt gebracht
- Mit
.htaccess
-Dateien können Sie bestimmte Einstellungen des Webservers ändern. - Über
.user.ini
-Dateien können Sie bestimmte PHP-Einstellungen ändern.
.htaccess-Dateien
Das Verhalten des Webservers kann durch .htaccess
-Dateien beeinflusst werden. Dem Namen zum Trotz kann man .htaccess
-Dateien für deutlich mehr als die Zugriffskontrolle einsetzen.
Die in einer .htaccess
-Datei definierten Regeln wirken sich auf das Verzeichnis aus, in dem diese Datei liegt, sowie auf alle Unterverzeichnisse, sofern sie dort nicht durch eine weitere .htaccess
-Datei überschrieben werden.
Welche Direktiven (Anweisungen) erlaubt sind, hängt davon ab, ob das Verzeichnis zu einem Webserver oder einer persönlichen Homepage gehört. Für Webserver gilt, dass jede Direktive nutzbar ist, die prinzipiell in einer .htaccess
-Datei erlaubt ist. In der Dokumentation wird das Kontext genannt. Für persönliche Homepages gilt die Einschränkung, dass Direktiven vom Typ Options
nicht verfügbar sind.
Im Folgenden sind Anwendungsfälle für .htaccess
-Dateien aufgeführt. Für weitergehende Fragen kann die offizielle Dokumentation des Apache-Webservers herangezogen werden.
Die nachfolgenden Beispiele bewirken die Verschlüsselung effektiv und robust. Ähnlich scheinende Einstellungen von WordPress und anderen Web-Anwendungen tun das nicht ordentlich, und sollten höchstens zusätzlich benutzt werden.
Beispiel: Sichere Verbindung erzwingen
Dass Ihre Website nur über HTTPS – also verschlüsselt – erreichbar wird, kann mit dem folgenden .htaccess
-Schnipsel erreicht werden.
RewriteEngine On RewriteCond %{ENV:HTTPS} !On RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [redirect=permanent,last]
Beispiel: Sichere Verbindung erzwingen plus Umleitung
Wenn ihr Server – aus welchen Gründen auch immer – unter mehreren Namen erreichbar ist, aber immer den gleichen Inhalt zeigt, spricht man von Duplicate Content. Mit den folgenden Zeilen leiten Sie alle Anfragen auf einen Hauptnamen (im Beispiel www.example.com) um und erzwingen gleichzeitig die Verschlüsselung (HTTPS) ähnlich wie im Beispiel oben.
RewriteCond %{ENV:HTTPS} !On [nocase,or] RewriteCond "%{HTTP_HOST}" !=www.example.com [nocase] RewriteRule ^(.*)$ https://www.example.com/$1 [redirect=permanent,last]
Beispiel: Verzeichnisse sperren
Manchmal ist es nötig, alle Zugriffe auf ein Verzeichnis zu blockieren. Meist sind Konfigurations- oder Passwort-Dateien zu schützen, die vom Server nicht ausgeliefert werden sollen. Eine Option ist, die entsprechenden Dateien nicht im DocumentRoot, sondern in einem anderen Verzeichnis abzulegen. Die folgende Direktive sperrt den Zugriff auf ein Verzeichnis für alle Anfragen aus dem Web.
Require all denied
Beispiel: Passwort-Authentifizierung
Einen einfachen Passwort-Schutz für ein Verzeichnis kann man mit einer .htaccess
-Datei sowie einer separaten Passwort-Datei erreichen.
Passwort-Datei anlegen
Die Passwort-Datei ist eine Textdatei, die für jeden Nutzer:innen-Namen eine Zeile nach dem folgenden Muster enthält.
Name:verschlüsseltes Passwort
Die Datei kann mit dem Kommando htpasswd
erstellt werden, das Ihnen auf unserer Zugangsmaschine zur Verfügung steht. Die erstellte Passwort-Datei darf nicht in einem Verzeichnis liegen, das öffentlich zugänglich ist (siehe Beispiel).
.htaccess
-Datei anlegen
Die Datei muss in dem Verzeichnis liegen, für das die Authentifizierung eingerichtet werden soll. Der folgende Block bewirkt die Authentifizierung und stellt sicher, dass das Passwort nur über eine verschlüsselte Verbindung übertragen wird.
<If "%{ENV:HTTPS} !~ /on/i"> RewriteEngine On RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [redirect=permanent,last] </If> <Else> AuthType Basic AuthName "Mein interner Bereich" AuthUserFile /nfs/web_mwn/www/x/kennung/webserver/config/pwd_datei Require valid-user </Else>
AuthName
ist ein frei wählbarer Text, der den Bereich bezeichnet, für den eine Authentifizierung notwendig ist. Der Text wird eventuell vom Browser im Anmeldedialog angezeigt.AuthUserFile
gibt den Pfad an, wo die oben erstellte Passwort-Datei zu finden ist.Require valid-user
erlaubt es allen Nutzer:innen, die einen Eintrag in der Passwort-Datei haben, sich zu authentifizieren. Anstattvalid-user
können auch einzelne Namen (mit Leerzeichen getrennt) aufgelistet werden.
Weitere Informationen zum Blockieren und Freigeben von Verzeichnissen finden Sie in der Apache-Dokumentation im Artikel Access Control.
Beispiel 3: Umschreiben von URLs
Zum Umschreiben von URLs kann man zwischen zwei Direktiven (bzw. Direktiv-Familien) wählen: Redirect(Match)
und RewriteRule.
Einfache Redirects, wie die komplette Umleitung einer Site auf eine andere, lassen sich mit RedirectMatch
einfach realisieren:
RedirectMatch ^ https://www.lrz.de?
Will man alle Aufrufe, die mit einer URL nach dem Muster http://www.example.com/unterverzeichnis/* aufgerufen werden, und den (beliebigen) URL-Teil, der dem Stern * entspricht, beibehalten, kann dies mit dieser .htaccess
-Datei erreicht werden:
RewriteEngine On RewriteRule ^unterverzeichnis(.*) https://www.lrz.de$1 [nocase,redirect]
Diese Konfiguration bewirkt, dass beispielsweise ein Aufruf von http://www.example.com/unterverzeichnis/index.html auf https://www.lrz.de/index.html umgeleitet wird. Die erste Direktive ist notwendig, um das Umschreiben von URLs zu aktivieren. Die RewriteRule
-Direktive wird nach folgendem Muster aufgerufen:
RewriteRule Muster Substitution [Optionen]
Die Regel wird dann folgendermaßen umgesetzt: Jede URL, die von dem regulären Ausdruck Muster
erfasst wird, wird entsprechend der Substitution
modifiziert. Die Ausdrucksmöglichkeiten der regulären Ausdrücke orientieren sich dabei an der Perl-Syntax: beispielsweise markiert das Zeichen "^" den Anfang des Strings. Ausdrücke, die im Muster
geklammert sind, lassen sich in der Substitution
wieder aufrufen (nach Reihenfolge im regulären Ausdruck, im Beispiel entspricht also $1
dem Inhalt von (.*)
). Das Flag [nocase]
gibt an, dass Groß/Kleinschreibung ignoriert werden soll, [redirect]
erzwingt die Weiterleitung zur externen Ressource.
Weitere Informationen finden Sie hier:
- Informationen zur Direktive Redirect
- Informationen zur Direktive Rewrite
- Unter welchen Bedingungen man auf Rewrite-Direktiven verzichten sollte
Tipp
Um beim Einrichten von Weiterleitungen das Testen zu erleichtern, kann man mit dem Flag redirect=temp
das Cachen der Weiterleitungen im Browser verhindern. Sobald alles funktioniert, kann man dauerhafte Weiterleitungen mit redirect=permanent
bestimmen.
.user.ini
-Dateien
PHP bietet Unterstützung für Konfigurations-INI-Dateien auf Verzeichnisebene an. DIese Funktionalität ist prinzipiell auch im Standard-Hosting verfügbar. Lesen Sie mehr dazu im PHP-Handbuch.