htaccess

Eine .htaccess-Datei ist eine Textdatei, mit der man die Konfiguration eines Webservers beeinflussen kann, ohne direkten Zugriff auf die Hauptkonfigurationsdatei (httpd.conf) des Webservers zu haben. Die Konfigurationen in der .htaccess-Datei, beziehen sich dabei immer auf den gesamten Inhalt des aktuellen Verzeichnisses. Sprich alle Dateien und Unterordner die sich darin befinden.

Häufig wird die .htaccess-Datei eingesetzt, wenn ein Verzeichnis mit einem Zugriffsschutz versehen werden soll oder URL’s auf andere URL’s weitergeleitet werden sollen.

Bei der .htaccess handelt es sich um eine textbasierte Datei, durch deren Verwendung berechtigte Nutzer verzeichnisspezifisch die Konfiguration eines NCSA-kompatiblen Webservers beeinflussen können. Der bekannteste Webserver des „National Center for Supercomputing Applications“ (NCSA) ist der weit verbreitete Apache HTTP Server. Seine Arbeitsweise wird durch eine oder mehrere zentrale Datei(en) gesteuert, die man „httpd.conf“ nennt. Diese übergeordneten Konfigurationsdateien sind in der Regel innerhalb des Programmverzeichnisses des Webservers selbst gespeichert und werden vom Server-Administrator definiert. In dieser Datei legt er unter anderem fest, ob ein Benutzer die Berechtigung erhält, die Server-Konfiguration mithilfe von .htaccess-Tricks zu verändern. Ist er berechtigt, kann ein User .htaccess-Dateien für jedes gewünschte Verzeichnis anlegen und bearbeiten.

Bei jedem Seitenzugriff scannt der Webserver rekursiv sämtliche Verzeichnisse ohne die Informationen zwischenzuspeichern. Servereinstellungen, die mit einer .htaccess-Datei vorgenommen werden, sind daher ab dem Moment gültig, in dem die .htacces im jeweiligen Verzeichnis abgelegt wird, ohne dabei den Server neu starten zu müssen. Die Schreibweise sollte zu 100 Prozent korrekt sein, da eine falschgeschriebene .htaccess unter Umständen den Seitenzugriff auf dem kompletten Server verhindern kann.

.htaccess Datei erstellen

Da .htaccess-Dateien reine Textdateien sind, können sie mit jedem Texteditor erstellt und bearbeitet werden. Je nach verfügbarem Zugang zum Webserver unterscheidet sich das Vorgehen bei der Erstellung. Mit Telnet- oder SSH-Zugang können .htaccess-Dateien direkt auf dem Server erstellt und bearbeitet werden. Steht nur ein FTP-Zugang zur Verfügung, muss die Datei lokal erstellt und anschließend hochgeladen werden. Dass der Name mit einem Punkt beginnt, ist üblich bei Unix-Systemen, bei denen verzeichnisspezifische Konfigurationsdateien stets mit einem Punkt beginnen. Das kennzeichnet sie als „versteckt“, was bei der Verwendung eines grafischen FTP-Clients jedoch dazu führen kann, dass die hochgeladene .htaccess-Datei verschwunden zu sein scheint.

Der vorangestellte Punkt sorgt auch bei der lokalen .htaccess-Erstellung auf Windows-Systemen für ein Problem, das sich allerdings schnell lösen lässt. Da Windows den Punkt anders interpretiert als Linux, dürfen Dateinamen, die mit einem Punkt beginnen, nicht unmittelbar vergeben werden. Damit der Editor also nicht das typische .txt anhängt, sollte beim Speichern unter Dateityp „Alle Dateien“ ausgewählt werden. Ist die .htaccess-Datei mit dem gewünschten Befehl bestückt, muss sie nur noch in das Zielverzeichnis befördert werden. Sie ist dann sofort gültig – auch für sämtliche Unterverzeichnisse.

Anwendungsbeispiele:

1. Alternative Fehlerseiten

Webserver zeigen per Voreinstellung eine standardmäßige HTML-Datei bzw. hart kodierte Meldung an, wenn es beim Zugriff auf die Website zu einem Fehler kommt. Diese Fehlermeldungen sind oft nicht sehr hübsch und einfallsreich – also alles andere als besucherfreundlich. Mithilfe von .htaccess ist es möglich, eigene Ausweich-Seiten oder -Meldungen einzuspeisen, die bei einem Webshop z.B. auf einen vergleichbaren Artikel verweisen. Für das Einbinden eigener Fehlerseiten sind folgende Angaben in der .htaccess notwendig:

# Eigene Fehlermeldungen lokaler Speicherort
ErrorDocument 404 /verzeichnispfad/404.html

Liegt die Fehlerseite oberhalb des Root-Verzeichnisses der Website oder auf einer externen URL, kann auch die komplette URL in die .htaccess, die sich in diesem Fall im Root-Verzeichnis befinden muss, eingegeben werden: Liegt die Fehlerseite oberhalb des Root-Verzeichnisses der Website oder auf einer externen URL, kann auch die komplette URL in die .htaccess, die sich in diesem Fall im Root-Verzeichnis befinden muss, eingegeben werden:

# Eigene Fehlermeldungen externer Speicherort
ErrorDocument 404 www.domain.tld/verzeichnispfad/404.html

2. Weiterleitungen

Ein großes Einsatzfeld von .htaccess-Dateien bilden Weiterleitungen bzw. Redirects. Es lassen sich beispielsweise einzelne Dateien innerhalb einer Website umleiten oder auch Anfragen auf eine andere Domain weiterleiten. Das ist vor allem praktisch, wenn die Website umzieht. Im Root-Verzeichnis gespeichert, sorgt folgender Code dafür, dass Anfragen an die ursprüngliche Domain vom Server zur neuen Domain umgeleitet werden:

# Einfache Weiterleitung
Redirect / http://www.neue-domain.tld/

Einzelne Dateien lassen sich mit derselben Methode innerhalb einer Website umleiten, falls sich zum Beispiel der Seitenname geändert hat:

# Weiterleitung einzelner Dateien
Redirect /alte-seite.html neue-seite.html

3. Passwortgeschützte Bereiche

Wer keine umfangreichen Login-Scripte mit PHP schreiben möchte, aber dennoch ein geschütztes Verzeichnis oder geschützte Dateien auf seinem Webserver benötigt, kann stattdessen .htaccess-Tricks zur Einrichtung geschützter Bereiche verwenden. Zunächst wird für diese Art des Passwortschutzes eine zweite Datei mit dem Namen .htpasswd benötigt, in welcher die jeweiligen Passwörter gespeichert werden. Diese dürfen in Unix-Systemen nur verschlüsselt eingetragen werden – zu diesem Zweck gibt es im Web verschiedene .htpasswd Generatoren. Geschützte Verzeichnisse können folgendermaßen angelegt werden:

# Einfacher Passwortschutz mit .htaccess
AuthType Basic
AuthName „Passwortgeschützter Bereich“
AuthUserFile /<absoluter Pfad zur Passwortdatei>/.htpasswd
AuthPGAuthoritative Off
require user User1 User2 User3

Zusätzlich wird die .htpasswd mit den Usern inklusive ihrer verschlüsselten Passwörter erstellt: Zusätzlich wird die .htpasswd mit den Usern inklusive ihrer verschlüsselten Passwörter erstellt:

# .htpasswd-Datei für Benutzernamen und Passwörter
User1:duCmo1zxkKx6Y
User2:mou3IYjSLpGWI
User3:HGKS9XzDXXAXQ

Während die .htpasswd-Datei anschließend idealerweise oberhalb des Rootverzeichnisses abgelegt wird, muss sich die .htaccess in dem Verzeichnis befinden, das geschützt werden soll. Während die .htpasswd-Datei anschließend idealerweise oberhalb des Rootverzeichnisses abgelegt wird, muss sich die .htaccess in dem Verzeichnis befinden, das geschützt werden soll.

4. PHP Memory Limit erhöhen

Die Nutzung von PHP-Anwendungen unterliegt einem bestimmten Memory Limit. Das Limit bestimmt den maximalen Arbeitsspeicherverbrauch, den alle verwendeten PHP-Scripts auf dem Server gemeinsam verursachen dürfen. Mit dem folgenden Befehl in der .htaccess lässt sich das Limit bei Bedarf erhöhen:

# PHP Memory Limit
php_value memory_limit 128M

Der Wert 128M steht in diesem Fall für ein Limit von 128 Megabyte. Je nach Speicherbedarf und Servervoraussetzung können auch andere Limits gesetzt werden. Der Wert 128M steht in diesem Fall für ein Limit von 128 Megabyte. Je nach Speicherbedarf und Servervoraussetzung können auch andere Limits gesetzt werden.

5. Die Zeitzone des Webservers ändern

Läuft der Webserver in der falschen Zeitzone, kann das mit folgendem Eintrag in der .htaccess angepasst werden:
# Zeitzone setzen
SetEnv TZ Europe/Berlin

6. IP-Adressen blockieren

Es ist auch möglich, bestimmten IP-Adressen oder -Bereichen den Zugriff auf Websites zu verwehren. Mit dem richtigen Eintrag in der .htaccess können sogar alle IP-Adressen ausgeschlossen und nur ganz bestimmten der Zugriff gewährt werden. So kann das Web-Angebot beispielsweise nur den Mitarbeitern im firmeneigenen Intranet zur Verfügung gestellt werden. Der folgende Befehl fasst einige der möglichen Zugriffsbeschränkungen zusammen:

# Datei zum Regeln von IP-Bereichen
Order deny,allow
Deny from .aol.com
Deny from 192.168
Allow from 192.168.220.102

Mit dem Eintrag „Order“ wird die Interpretationsreihenfolge der eingetragenen Angaben festgelegt – die Reihenfolge ist dabei egal. Die weiteren Einträge kommunizieren dem Webserver, dass alle Benutzer mit .aol.com-Kennung sowie alle mit der numerischen IP-Adresse des Bereichs 192.168 von der Benutzung der Website ausgeschlossen sind. Eine Ausnahme bildet dabei der User mit der IP 192.168.220.102. Mit dem Eintrag „Order“ wird die Interpretationsreihenfolge der eingetragenen Angaben festgelegt – die Reihenfolge ist dabei egal. Die weiteren Einträge kommunizieren dem Webserver, dass alle Benutzer mit .aol.com-Kennung sowie alle mit der numerischen IP-Adresse des Bereichs 192.168 von der Benutzung der Website ausgeschlossen sind. Eine Ausnahme bildet dabei der User mit der IP 192.168.220.102.

7. Umleitung der Webpräsenz von HTTP auf HTTPS

Wer für seine Domain ein SSL-Zertifikat nutzt, hat die Möglichkeit, die Domain per .htaccess-Befehl auf den verschlüsselten HTTPS-Aufruf umzuleiten:

# Aktiviere HTTPS
RewriteEngine On
RewriteCond %{Server_Port} !=443
RewriteRule ^(.*)$ https://ihredomain.tld/$1 [R=301,L]

8. Datei-Zugriff über den Browser aktivieren

Mit folgendem Befehl kann der Verzeichnisinhalt im Browser angezeigt und anderen Benutzern zum Download angeboten werden:

# Zeige Verzeichnisinhalt an
Options +Indexes

9. Hotlinking von Bildern verhindern

Beim sogenannten Hotlinking verlinkt eine dritte Person Medien auf seiner Website, insbesondere Bilder, die auf einem anderen Host gespeichert sind. So entsteht für den eigentlichen Besitzer ein höheres Datenvolumen, auf das er keinen Einfluss hat. Dank .htaccess-Tricks ist es möglich, das Verlinken auf bestimmte Dateitypen der eigenen Website mit folgendem Befehl zu blockieren:

# Verhindere Hotlinking
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://ihre-webhosting-domain/.*$ [NC] [OR]
RewriteCond %{HTTP_REFERER} !^http://www.ihre-webhosting-domain/.*$ [NC] [OR]
RewriteRule .*\.(gif|GIF|jpg|JPG|bmp|BMP|wav|mp3|wmv|avi|mpeg)$ – [F]

10. Zeichensatz für Dokumente festlegen

Umlaute sind häufig ein störender Faktor, wenn man es mit Websites und Quellcodes zu tun hat. Im Quelltext werden Umlaute daher durch Zeichen bzw. Buchstabencodes ersetzt, damit sie wunschgemäß auf der Seite angezeigt werden. Mit der .htaccess-Datei kann verzeichnisgenau festgelegt werden, welche Zeichenkodierung für den jeweiligen Dokumententyp verwendet werden soll. Folgender Befehl bestimmt für alle Dokumente die Codierung UTF-8:

# Zeichenkodierung festlegen
AddDefaultCharset utf-8

Sollen nur bestimmte Dokumententypen auf ihre Codierung festgelegt werden, wird im Befehl die entsprechende Dateienendung angehangen:

# Zeichenkodierung für bestimmte Dateien festlegen
AddDefaultCharset utf-8 .css .htm .html .xhtml .php