htaccess: So erzeugen Sie eigene Regeln für Rewrite und Passwortschutz

Mit Befehlen in der .htaccess-Konfigurationsdatei legen Sie Funktionen fest, die der Webserver bei jeder Serveranfrage ausführt. Die Befehle gelten immer für das Verzeichnis, in dem die Datei liegt, und dessen Unterverzeichnisse.  .htaccess-Dateien sind reine Textdateien, weshalb Sie die Eintragung mit jedem normalen Texteditor vornehmen können. Per SSH-Zugang zu Ihrem Rechner lässt sich die Datei auch direkt auf dem Server bearbeiten. Bei einem FTP-Zugang laden Sie die Datei zuerst auf Ihrem PC, bearbeiten sie lokal und laden sie anschließend wieder hoch. Zwei der am häufigsten verwendeten Befehle in den Konfigurationsdateien sind der Passwortschutz und die Rewrite-Funktion. Wie Sie diese Regeln anlegen, zeigen wir Ihnen hier.

So schützen Sie Dateien oder Verzeichnisse mit einem  Passwort

Der Passwortschutz mittels .htaccess-Datei lässt sich auf einzelne Dateien, bestimmte Dateitypen, ganze Verzeichnisse und Unterverzeichnisse, einzelne Benutzer oder Benutzergruppen anwenden. Neben der .htaccess-Datei benötigen Sie eine zusätzliche Datei mit Benutzernamen und Passwörtern, und falls benötigt eine mit den Mitgliedern einer Benutzergruppe.
Der Befehl für einen Passwortschutz baut sich folgendermaßen auf:

# .htaccess-Datei für Zugriff auf Download-Bereich
AuthType Basic
AuthName Downloads
AuthUserFile /usr/verwaltung/web/.htusers
AuthGroupFile /usr/verwaltung/web/.htgroups
Require user Michael Judith Thorsten
Require group Administratoren

<File *.htm>
Require user Kerstin Simon
Require groups administratoren

</Files>

htaccess

So sieht der gleiche Befehl in der Konsole aus.

AuthTpye Basic steht für die Authentifizierung mittel HTTP, alternativ können Sie zum Beispiel die Verschlüsselung per Digest verwenden. AuthName gibt der Regel einen Namen. AuthUserFile benennt den Pfad der Datei, in der die separat abgespeicherten Benutzer und Passwörter abgelegt sind. Idealerweise benennen Sie die Datei mit htusers oder htpasswd.

Wenn Sie den Passwortschutz auch für Benutzergruppen anlegen, muss ebenfalls die AuthGroupFile hinterlegt sein, in der diese Gruppen aufgelistet sind.
Hinter der Information Require user und Require group verbirgt sich der Name Ihrer Benutzer oder Benutzergruppen, für diese Passwort-Regel gilt. Schließlich können Sie den Passwortschutz wahlweise auf einen bestimmten Dateityp oder eine einzelne Datei beschränken. Dafür fügen Sie den unten Teil des Beispiels oben ein und benennen die Datei konkret (dateiname.hmt), oder mit einem Sternchen für alle Inhalte dieses Dateityps.

Die benötigten Dateien mit den Benutzernamen (.htusers) und Gruppen (.htgroups) werden wahlweise mit Kommentarfunktion und dann mit Benutzer und Passwort (wahlweise verschlüsselt per Crypt)  geschrieben. Dazu eignet sich das über die Konsole zu bedienende Apache-Programm htpasswd.

# BenutzerDatei für Zugriff auf Download-Bereich
Michael: Eod§572nw!83
Judith: newOi5r3/z2P
Thorsten: zhTE528%r1hfB
Felix: Griw7$nsd873mN
Kerstin: Kuw30gu!n4
Simon: hfE164p=?3gR

htusers

Auch die Benutzer legen Sie wie vorgegeben an.

Ebenso legen Sie die Datei für Gruppen mit den Gruppennamen und den zugehörigen Mitgliedern an, für diese muss in der Benutzerdatei ebenfalls ein Eintrag hinterlegt sein.

# GruppenDatei für Zugriff auf Download-Bereich
Administratoren: Felix Kerstin Simon

Speichern Sie alle diese Dateien in dem Verzeichnis ab, wo die zu schützenden Dateien liegen. Als Ergebnis dieses Passwortschutzes wird den Benutzern beim Aufruf der Website bzw. des Verzeichnisses ein Fenster geöffnet, in das Name und Passwort eingetragen werden müssen.

Rewrite zur URL-Umleitung einrichten

Mit dem Rewrite-Befehl modifizieren Sie Website-Aufrufe, das heißt zum Beispiel sie umzuschreiben und auf eine andere URL weiterzuleiten. Die Funktion ist Teil des Apache-Moduls mod_Rewrite (der Rewrite Engine), das vielfache Spezifizierungen für die Weiterleitung zulässt. Die Rewrite-Funktion wird häufig verwendet, um dynamische, unleserliche Adressen unter einer statischen URL erreichbar zu machen. Solche Umbenennungen können auch zu Zwecken der SEO-Optimierung Sinn machen. Außerdem lassen sich mit dem Rewrite Spambots ausschließen, dynamische Mirrors erstellen, oder ganz einfach eine http- auf eine https-Adresse weiterleiten. Die Regel kann in Abhängigkeit von Parametern wie der IP-Adresse, dem Referer oder der User-Agent-Kennung definiert werden.

Der Code für eine RewriteRule muss einem strengen Aufbau mit festgelegten Ausdrücken folgen (siehe u.a. modrewrite.de). Damit die Umleitungs-Regel greifen kann, muss Rewrite zunächst einmalig aktiviert werden. Dies nehmen Sie mit der Codezeile RewriteEngine on am Anfang der .htaccess-Datei vor. Der Befehl beginnt mit RewriteRule, dann der Ausgabe und schließlich dem Original.

Ein Befehl, der alle PHP-Dateien als statische HTML-Seiten ausgibt, sähe folgendermaßen aus:

RewriteEngine on
RewriteRule ^(.*)\.htm$  $1.php

Um auf eine neue Website zu leiten nutzen Sie diesen Befehl:

RewriteEngine on
RewriteRule ^(.*) $  http://www.neuewebsite.de/$1

Eine RewriteRule, die beispielsweise nicht existierende Websites auf die index.php weiterleitet schreibt sich:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ /index.php [R=301,L] 
 

htaccess2

Die Rewrite Regel ist schnell zu erstellen.

Es gibt eine Reihe von weiteren Anweisungen, die Sie mit mod_rewrite Ausdrücken veranlassen  können. Dazu empfehlen wir die Apache Support-Lektüre. Mod-rewrite wird von Administratoren als funktionsreiches Werkzeug gepriesen, das aber auch viele Fehlerquellen bietet und deshalb sorgfältig angewendet werden muss.

.htaccess – eine Textdatei für zahlreiche Server-Befehle

Der Passwortschutz und die Rewrite-Funktion sind nur zwei von vielen Regeln, die Sie in einer .htaccess-Datei festlegen können. Per Befehl lassen Sie außerdem einen speziellen Dateityp standardmäßig mit derselben Anwendung öffnen, oder befehlen einem Script diverse Dateiendungen zu lesen. Je nachdem wo Sie die .htaccess-Datei abspeichern wirkt sie auf das Verzeichnis und alle Unterverzeichnisse. Sehr gute Anleitungen dazu finden Sie auf der Website selfhtml.