.htaccess (englisch hypertext access „Hypertext-Zugriff“) ist eine Konfigurationsdatei auf NCSA-kompatiblen Webservern wie Apache, in der verzeichnisbezogene Regeln aufgestellt werden können.
Beispielsweise kann man darüber ein Verzeichnis oder einzelne Dateien durch HTTP-Authentifizierung vor unberechtigten Zugriffen schützen. Auch Fehlerseiten oder Weiterleitungen innerhalb des Servers (siehe Rewrite-Engine) lassen sich darin festlegen, ohne dass der Server neu gestartet werden muss: Änderungen in der .htaccess-Datei treten ohne Weiteres sofort in Kraft, weil die Datei bei jeder Anfrage an den Webserver ausgewertet wird. Bestimmungen in einer .htaccess wirken wie Directory-Abschnitte in zentralen Konfigurationsdateien wie einer httpd.conf. Sie gelten nur für das Verzeichnis, in dem die .htaccess gespeichert ist, und in allen seinen Unterverzeichnissen; können aber in den Unterverzeichnissen überschrieben werden.
Einsatzmöglichkeiten
Zugriffsschutz
Soll der Zugriff auf ein Verzeichnis durch die Abfrage von Login-Daten geschützt werden (hier /var/www/html), wird in diesem Verzeichnis eine .htaccess-Datei mit folgendem Inhalt angelegt.
AuthType Basic
AuthName "Titel des Passwortschutzes"
AuthUserFile /var/www/html/.htpasswd
Require valid-user
Dabei verweist AuthUserFile
auf eine Datei, die Benutzernamen und Passwort in der Form Benutzername:Hash
enthält. Dieser Inhalt kann beispielsweise mit dem Tool htpasswd erzeugt werden.
$ htpasswd -nb derName dasPasswort
derName:$apr1$m0OaZVp0$9OHApAf65z24vNUZts8Zz1
Dabei stehen die Hashfunktionen MD5, bcrypt, crypt und SHA zur Auswahl und manchmal werden an das Passwort zufällige Zeichen angehängt – Salt genannt (englisch für Salz) – bevor der Hashwert berechnet wird, wodurch auch identischen Passwörtern unterschiedliche Passwort-Hashwerte zugeordnet werden.
Request-Umleitung
Wenn auf dem Webserver ein Modul installiert ist, das eine URL abändern kann, dann können in der .htaccess-Datei Umleitungen definiert werden.
Das folgende Beispiel besagt in Zeile 1: „Wenn www.example.com
nicht in der Anfrage vorkommt, …“ und in Zeile 2: „… dann leite weiter nach http://www.example.com
.“
RewriteCond %{HTTP_HOST} !^www.example.com$ [NC]
RewriteRule ^(.*)$ http://www.example.com/$1 [L,R=301]
Weblinks
- .htaccess – Verzeichnisse und Dateien mit Passwort schützen im Selfhtml-Wiki
- .htaccess Tutorial (englisch) in der Dokumentation von Apache 2.2
- .htaccess Tutorial (englisch) in der Dokumentation von Apache 2.4 (dort wurden neue Funktionen für die .htaccess hinzugefügt)