Eine .htaccess Datei (abgeleitet aus dem Englischen hypertext access – Hypertext-Zugriff) stellt eine Server-Konfigurationsdatei für Verzeichnisse dar. In dieser Datei können Einstellungen auf NCSA-Servern bzw. Servern, die mit diesen kompatibel sind, vorgenommen werden. Bekannt ist die Datei vor allem aus der Konfiguration von Apache-Servern. Zu den typischen Einsatzmöglichkeiten gehört bspw. die Einrichtung des Zugriffsschutzes mit Hilfe der HTTP-Authentifizierung. Dieser Schutz lässt sich sowohl für ein einzelnes Verzeichnis als auch für einzelne Dateien anlegen. Ob und welche Anweisungen genutzt werden dürfen, hängt jedoch von der zentralen Serverkonfiguration ab.
Eine .htaccess Datei ist eine einfache Textdatei, die auch von Menschen gelesen werden kann. Der Inhalt der Datei kann mit einem Texteditor bearbeitet werden. Sofern ein SSH-Zugang zum Server-Rechner vorliegt, auf dem das Web-Angebot liegt, können solche Dateien auch direkt auf dem Server erstellt und bearbeitet werden. Dafür muss ein geeigneter Texteditor aufgerufen werden. Anderenfalls, z.B. bei einem FTP-Zugang, kann eine .htaccess Datei mit Hilfe eines Texteditors lokal erstellt und anschließend hochgeladen werden. Im Allgemeinen werden für eine .htaccess Datei dieselben Syntax-Regeln verwendet wie bei den Hauptkonfigurationsdateien. Die betreffenden Anweisungen müssen in den Hauptkonfigurationsdateien als überschreibbar (AllowOverride) ausgewiesen sein. Andernfalls werden sie nicht angewendet oder führen je nach Konfiguration zu einem Serverfehler.
Grundsätzlich hat eine .htaccess Datei ihre Gültigkeit für das Verzeichnis, in dem sie abgelegt wird, und für dessen Unterverzeichnisse. Falls für ein bestimmtes Unterverzeichnis andere Regeln gelten sollen, kann dort eine separate .htaccess Datei gespeichert werden. Deren Regeln ergänzen oder überschreiben die übergeordneten Einstellungen abhängig von der jeweiligen Direktive. Im Laufe der Zeit ist der Umfang der möglichen Anweisungen und Konfigurationsmöglichkeiten gewachsen. Welche Anweisungen tatsächlich erlaubt sind, hängt jedoch im Wesentlichen davon ab, welche Rechte der Server-Administrator in der zentralen Konfigurationsdatei eingeräumt hat. Bei administrativem Zugriff ist die zentrale Serverkonfiguration häufig effizienter, während .htaccess Dateien vor allem in Hosting-Umgebungen ohne Zugriff auf diese Konfiguration eingesetzt werden.
Zugriffsschutz mit Hilfe der .htaccess Datei
Die .htaccess Datei ist ein gängiger Weg, damit nur ein definierter Kreis an Benutzern den Zugriff auf bestimmte Dateien oder Verzeichnisse erhält. Üblicherweise werden in der .htaccess Datei das Authentifizierungsverfahren und der Pfad zu einer separaten Passwortdatei festgelegt. Benutzername und Passwort-Hash liegen beispielsweise in einer .htpasswd Datei und sollten nicht im öffentlich erreichbaren Verzeichnis gespeichert werden. Eine weitere Möglichkeit besteht darin, ganze Benutzerkreise automatisch auszusperren, ohne dass sie über einen Passwortzugang verfügen. Es können auch nur ausgewählte Nutzer oder Netze ausgeschlossen werden.
Mit Hilfe einer .htaccess Datei besteht die Möglichkeit, bestimmte IP-Adressen oder IP-Netzbereiche vom Zugriff auf die Webseite auszuschließen. Im Umkehrschluss bedeutet das, dass man auch sämtlichen IP-Adressen den Zugriff verwehren und nur ganz bestimmten Adressen den Zugriff erlauben kann. In diesem Fall erhalten User, die nicht über eine autorisierte IP-Adresse verfügen, in der Regel eine HTTP-Fehlermeldung mit dem HTTP-Statuscode 403 – der Zugriff auf die Webseite wird somit verweigert. Dies wird z.B. für interne Netzwerke oder geschützte Testbereiche eingesetzt, wenn nur Mitarbeiter einer Firma oder andere berechtigte Personen Seiteninhalte aufrufen dürfen. Bei dynamischen IP-Adressen, Proxys oder IPv6-Netzen müssen die freigegebenen Bereiche sorgfältig geprüft werden.
In der .htaccess Datei können außerdem Optionen für das Verzeichnis-Browsing festgelegt werden. Damit lässt sich bestimmen, ob Verzeichnislisten angezeigt werden dürfen und wie sie im Browser dargestellt werden. Dabei liest der Webserver den Verzeichnisinhalt ein und generiert dynamisch HTML, das im Browser angezeigt wird. Ist eine solche Auflistung nicht erforderlich, sollte sie deaktiviert werden, damit Dateien nicht unbeabsichtigt sichtbar werden.
Außerdem kann man über die .htaccess Datei interne Umschreibungen sowie Fehlerseiten einstellen. Änderungen in der .htaccess Datei werden normalerweise ohne Neustart des Servers wirksam. Bei aktivierter Unterstützung prüft Apache im Zuge der Verarbeitung einer Anfrage die für den angeforderten Pfad relevanten Konfigurationsdateien. Einstellungen wirken ähnlich wie Directory-Abschnitte in zentralen Konfigurationsdateien – sie gelten für das Verzeichnis, in dem sie abgelegt wurden, und die dazugehörigen Unterverzeichnisse. In den Unterverzeichnissen können sie abhängig von der jeweiligen Anweisung ergänzt oder überschrieben werden. Vor einer Änderung empfiehlt sich eine Sicherung, da bereits ein Syntaxfehler einen HTTP-Statuscode 500 auslösen kann.
Beispiel: In einer Apache-.htaccess-Datei lässt sich eine automatisch erzeugte Verzeichnisauflistung mit dieser Direktive deaktivieren:1
Options -IndexesDie Serverkonfiguration muss diese Anweisung in der .htaccess erlauben. Sie verhindert die automatische Auflistung eines Verzeichnisses ohne geeignete Indexdatei, schützt aber keine Datei, deren URL direkt aufgerufen wird.
Automatische Weiterleitungen ebenfalls möglich
Nicht zuletzt sind mit der .htaccess Datei automatische Weiterleitungen oder eigene Regelungen für den Fall von HTTP-Fehlermeldungen möglich. Je nach bestimmten Bedingungen können alternative Inhalte angeboten werden. Auf diese Weise lassen sich z.B. Webseiten mit unterschiedlichen Landessprachen ausliefern, etwa abhängig von der vom Browser übermittelten Sprachpräferenz. Wird eine bestimmte URL angefordert, kommunizieren zunächst der Browser (Client) und der Webserver. Dieser Dialog dauert meist nur Bruchteile von Sekunden und bleibt von normalen Usern unbemerkt. Dabei übermittelt der Client unter anderem HTTP-Header, die Angaben zu akzeptierten Inhaltstypen, Sprachen oder Kompressionsverfahren enthalten können. Der Server entscheidet anhand seiner Konfiguration, welche Antwort er zurücksendet.
Die dafür notwendigen Mechanismen sind in den Spezifikationen des HTTP-Protokolls definiert. Übermittelt der Browser beispielsweise Deutsch als bevorzugte Sprache, kann der Server eine deutschsprachige Index-Webseite ausliefern. Wird Englisch bevorzugt, kann eine englischsprachige Index-Seite gesendet werden. Die Sprache der Browseroberfläche allein ist dafür jedoch nicht ausschlaggebend, und Sprachpräferenzen sind kein zuverlässiger Hinweis auf den Standort eines Users. Historisch konnten Server abhängig von den unterstützten Inhaltstypen auch spezielle Formate wie WML ausliefern. WML steht für Wireless Markup Language und wurde für frühere WAP-fähige Mobilgeräte verwendet. Für heutige Websites sind responsive HTML-Seiten üblich, die sich an unterschiedliche Bildschirmgrößen anpassen.
.htaccess Datei ermöglicht Kontrolle über Caches
Mit Hilfe der .htaccess Datei kann man außerdem festlegen, dass Daten in komprimierter Form an den Browser übermittelt werden oder dass der Aufruf einzelner Adressen auf eine andere URL weitergeleitet wird. .htaccess-Dateien werden außerdem häufig genutzt, um lange oder technisch geprägte URLs in kurze und verständliche Adressen umzuschreiben. Vor dem Hintergrund der Suchmaschinenoptimierung ist das ein wichtiger technischer Aspekt. Weiterleitungen sollten den passenden HTTP-Statuscode verwenden und direkt auf die endgültige Ziel-URL führen. Fehlerhafte Regeln können dagegen Weiterleitungsketten, Schleifen, doppelte Inhalte oder nicht erreichbare Seiten verursachen.
Darüber hinaus ermöglichen .htaccess-Dateien die Steuerung von HTTP-Headern für Browser- und Proxy-Caches. Auf diese Weise können wiederkehrende Downloads, die Bandbreitennutzung und die Serverauslastung reduziert werden. Dabei muss die Gültigkeitsdauer zum jeweiligen Dateityp passen: Sehr lange Cache-Zeiten sind bei versionierten Bildern, Skripten oder Stylesheets sinnvoller als bei häufig aktualisierten HTML-Dokumenten. Für die technische Google-Optimierung sollte anschließend geprüft werden, ob Weiterleitungen nur einmal ausgeführt werden, Zielseiten erreichbar und interne Links bereits auf die endgültigen URLs ausgerichtet sind.
Zusammenfassung
Die .htaccess Datei ist eine Server-Konfigurationsdatei, hauptsächlich bekannt durch ihre Anwendung auf Apache-Servern. Sie ermöglicht vielfältige Einstellungen, darunter Zugriffsschutz durch HTTP-Authentifizierung und IP-Filterung. Sie ist textbasiert und kann mit einem Texteditor bearbeitet werden.
Diese Datei ist nicht nur für das Verzeichnis gültig, in dem sie gespeichert ist, sondern grundsätzlich auch für dessen Unterverzeichnisse. Die möglichen Anweisungen und die Wirksamkeit der Datei hängen von den Server-Einstellungen ab, die vom Administrator festgelegt wurden. Regeln in tiefer liegenden Verzeichnissen können übergeordnete Einstellungen je nach Direktive ergänzen oder überschreiben.
Mit der .htaccess Datei können spezielle Regeln für den Zugriff auf Webinhalte eingestellt werden, zum Beispiel durch IP-Adressfilter oder Passwortschutz. Zusätzlich lassen sich Optionen für das Verzeichnis-Browsing und eigene Fehlerseiten definieren. Zugangsdaten selbst gehören dabei in eine dafür vorgesehene, möglichst außerhalb des öffentlich erreichbaren Bereichs gespeicherte Passwortdatei.
Weiterhin bietet die Datei die Möglichkeit für automatische Weiterleitungen und kann die Auslieferung von Webseiten anhand übermittelter Client-Eigenschaften wie der bevorzugten Sprache steuern. Dabei folgt sie den Mechanismen des HTTP-Protokolls.
Ein weiteres Einsatzgebiet der .htaccess Datei ist die Steuerung von Browser-Caches, Kompression und URL-Umschreibungen, was aus Sicht der technischen Suchmaschinenoptimierung von Bedeutung ist. Nach Änderungen sollten Statuscodes, Weiterleitungsziele und die Erreichbarkeit wichtiger Seiten kontrolliert werden.
Häufige Fragen und Antworten
Die .htaccess Datei ist eine Server-Konfigurationsdatei, die hauptsächlich auf Apache-Servern verwendet wird. Sie ermöglicht die Einstellung verschiedener Funktionen und Regeln für bestimmte Verzeichnisse und deren Unterverzeichnisse. Typische Anwendungsfälle sind Zugriffsschutz, Weiterleitungen, URL-Umschreibungen und die Steuerung von Cache-Headern.
Die .htaccess Datei bietet verschiedene Funktionen, darunter:
– Zugriffsschutz durch HTTP-Authentifizierung und IP-Filterung
– Einstellungen für das Verzeichnis-Browsing und die Darstellung von Verzeichnislisten im Browser
– Automatische Weiterleitungen und Anpassungen für HTTP-Fehlermeldungen
– Steuerung der Auslieferung von Webseiten anhand übermittelter Client-Eigenschaften
– URL-Umschreibungen sowie die Steuerung von Kompression und Cache-Headern
Eine .htaccess Datei kann mit einem Texteditor erstellt und bearbeitet werden. Bei einem SSH-Zugang zum Server erfolgt die Bearbeitung direkt auf dem Server. Andernfalls kann die Datei lokal erstellt und über FTP hochgeladen werden. Es gelten grundsätzlich dieselben Syntax-Regeln wie bei den Hauptkonfigurationsdateien. Änderungen werden normalerweise ohne Serverneustart wirksam. Vorher sollte eine Sicherung erstellt werden, da fehlerhafte Anweisungen einen Serverfehler verursachen können.
Typische Einsatzmöglichkeiten der .htaccess Datei sind:
– Zugriffsschutz für bestimmte Verzeichnisse und einzelne Dateien
– Kontrolle über IP-Adressen und IP-Netzbereiche für den Zugriff auf die Webseite
– Einstellungen für das Verzeichnis-Browsing und die Darstellung von Verzeichnislisten im Browser
– Automatische Weiterleitungen und eigene HTTP-Fehlerseiten
– Auslieferung unterschiedlicher Inhalte anhand von Client-Informationen
– Steuerung von Cache-Headern, Kompression und URL-Umschreibungen
Die .htaccess Datei kann technische Voraussetzungen für die Suchmaschinenoptimierung schaffen, etwa durch eindeutige URL-Umschreibungen, passende permanente oder temporäre Weiterleitungen, Kompression und Cache-Header. Das verbessert nicht automatisch Rankings. Fehlerhafte Regeln können Weiterleitungsketten, Schleifen, doppelte Inhalte oder nicht erreichbare Seiten verursachen. Deshalb sollten nach jeder Änderung die HTTP-Statuscodes, Ziel-URLs und wichtigen internen Verweise geprüft werden.
