Die .htaccess-Datei

Die .htaccess-Datei auf dem Webserver ist für viele Einstellungen verantwortlich

Mit der .htaccess-Datei kannst Du zahlreiche Aspekte des Apache-Webservers und NCSA-kompatiblen  Webservern in vielen Varianten steuern.

Im Folgenden erfährst Du alles, um spezielle Fehlerseiten, Kennwortschutzverzeichnisse, Weiterleitungen und vieles mehr einzurichten.

.htaccess was ist das?

Die .htaccess-Datei (kurz für „Hypertext Access“) ist eine Serverkonfigurationsdatei. Dies bedeutet, dass der Server nur in dem Verzeichnis konfiguriert wird, in dem sich die Datei befindet. Mit dieser kannst Du Serverkonfigurationen für ein bestimmtes Verzeichnis festlegen.

Dies kann das Stammverzeichnis Deiner Website oder ein Verzeichnis wie zum Beispiel / images und / downloads sein.

Die Konfigurationsdatei steuert, wie ein Webserver auf verschiedene Anforderungen reagiert. Es wird von mehreren Webservern unterstützt, einschließlich des beliebten Apache-Webservers, der von den meisten kommerziellen Webhosting-Anbietern genutzt wird.

Die Dateien zur Konfiguration des Webservers werden auf der Ebene eines Verzeichnisses ausgeführt. Sie sind in der Lage, die Konfigurationseinstellungen von .htaccess-Anweisungen zu überschreiben, die sich in der Verzeichnisstruktur befinden.

Die htaccess-Datei ist für viele Einstellungen verantwortlich

Wie funktioniert .htaccess?

Die .htaccess-Datei wird in einem Verzeichnis auf dem Webserver einer Domain abgelegt. Ist dies erledigt, wird es vom Apache-Webserver ausgeführt, wenn eine Anfrage aus diesem Verzeichnis gestellt wird. Es ist üblich, eine im Stammverzeichnis einer Site abzulegen, wie / public_html. Dadurch wird der Webserver für die gesamte Website konfiguriert. Es ist unüblich, Konfigurationsdateien in einem Unterverzeichnis abzulegen, aber es wird praktiziert und hat einige spezifische Verwendungszwecke.

Es ist wichtig zu wissen, dass die .htaccess-Datei wie jede andere Apache-Konfigurationsdatei von oben nach unten gelesen wird. Dies bedeutet, dass Konfigurationen oben vor denen unten ausgeführt werden. Du musst also auf die Reihenfolge der Regeln achten, um sicherzustellen, dass sie korrekt und effizient funktionieren.

Hinweis:

Da es sich um eine Serverkonfigurationsdatei der gesamten Domain handelt, kann ein Tippfehler dazu führen, dass der Server falsch konfiguriert wird. Allein deswegen kann es passieren, dass Deine Website nicht funktioniert! Bist Du Dir nicht sicher, solltest Du Dich an einen Webentwickler wenden. Ansonsten solltest Du Backups Deiner ursprünglichen Konfigurationsdatei erstellen und vorsichtig vorgehen.

Wie wird .htaccess verwendet?

Einige häufige Verwendungszwecke sind das Umleiten von URLs, um den Kennwortschutz für Webseiten zu aktivieren, das Anzeigen von benutzerdefinierten Fehlerseiten sowie eine Verbesserung der Suchmaschinenoptimierung.

.htaccess steht nicht umsonst für „Hypertext-Zugriff“. Der Name leitet sich von der ursprünglichen Verwendung des Tools ab, mit der der Benutzerzugriff auf bestimmte Dateien auf Verzeichnisbasis gesteuert wurde.

Mithilfe einer Teilmenge der http.conf-Einstellungsanweisungen von Apache kann ein Systemadministrator den Zugriff auf einzelne Verzeichnisse der Domain beschränken und Namen und Kennwörter in einer zugehörigen .htpasswd-Datei angeben. Hierfür werden ebenfalls Dateien zur Konfiguration eingesetzt.

Wo befinden sich .htaccess-Dateien?

Theoretisch könnte jeder Ordner, also jedes Verzeichnis auf Deinem Server eine haben. Im Allgemeinen befindet sich die Konfigurationsdatei jedoch in Deinem Webstammordner(Root Verzeichnis). Dieser Ordner enthält den gesamten Inhalt Deiner Website und ist normalerweise mit „public_html“ oder „www“ gekennzeichnet. Die Bezeichnung „www“ tritt häufig auf.

Hast Du ein einzelnes Verzeichnis, das mehrere Website-Unterverzeichnisse Deiner Domain enthält, befindet sich normalerweise eine .htaccess-Datei im Hauptstammverzeichnis (public_html) sowie eine in jedem Unterverzeichnis (/ sitename).

Die Fehlerbehandlung mit .htaccess

Das Angeben von Fehlerdokumenten ist eines der einfachsten Dinge, die Du mit dieser Funktion ausführen kannst.

Was ist ein Fehlercode?

Wird eine Anfrage an einen Webserver gestellt, versucht dieser, auf diese Anfrage zu antworten, indem sie normalerweise ein Dokument übermittelt (bei HTML-Seiten) oder auf eine Anwendung zugreift und die Ausgabe zurückgibt (bei Content-Management-Systemen und anderen Web-Apps).

Geht dabei etwas schief, wird ein Fehler generiert. Unterschiedliche Fehlertypen haben unterschiedliche Fehlercodes. Es gibt verschiedene Fehlercodes, mit denen ein Server antworten kann. Dazu gehören:

Serverfehler sind:

Ist keine Art der Fehlerbehandlung angegeben, gibt der Server die Nachricht einfach an den Browser zurück und dieser zeigt dem Benutzer eine allgemeine Fehlermeldung an. Dies ist normalerweise nicht ideal. Du kannst ein eigenes HTML-Dokument für jeden Fehlercode erstellen. Beachte, dass jede Direktive in einer eigenen Zeile steht. Die meisten Content-Management-Systeme (CMS) wie WordPress und Drupal sowie die meisten Web-Apps haben eine eigene Art, mit diesen Fehlercodes umzugehen.

Passwortschutz mit .htaccess

Der ursprüngliche Zweck von Konfigurationsdateien bestand darin, den Zugriff auf bestimmte Verzeichnisse pro Benutzer zu beschränken. Benutzernamen und Passwörter für das .htaccess-System werden unter dem Dateinamen .htpasswd gespeichert.

Sobald jemand Zugriff auf Deine .htpasswd-Datei erhält, wird nur das kryptografische Kennwort angezeigt, nicht das Original. Es gibt keine Möglichkeit, die Originale aus der Kryptografie zu rekonstruieren – es handelt sich um eine Einwegverschlüsselung.

Beim Zugriff auf die Seite sollten die konfigurierten Servereinstellungen sofort gültig angewendet werden. Aus diesem Grund überprüft der Webserver bei jedem Besuch die Informationen im .htaccess, anstatt die endgültige Version abzuspeichern. Dies erfordert Rechenleistung. Der Vorteil ist, dass die vorgenommenen Änderungen ohne Zeitaufwand sofort und korrekt implementiert werden können. Das ist mit .htaccess-Dateien möglich:

Die .htaccess-Datei gilt nur für das Verzeichnis und das zugehörige Unterverzeichnis, in dem die Datei gespeichert ist. Durch Speichern im Stammverzeichnis htdocs kann die gesamte Website Verzeichnis-übergreifend konfiguriert werden. Es müssen mehrere Dateiversionen für unterschiedliche Regeln erstellt und in eigenen Verzeichnissen gespeichert werden. Wird ein .htaccess in einem Unterverzeichnis gespeichert, werden die Regeln des oberen Verzeichnisses automatisch auf alles Darunterliegende überschrieben.

Die .htaccess-Datei 1 wird auf das übergeordnete Verzeichnis 1 angewendet. Obwohl dort noch keine Datei vorhanden ist, wird die Information automatisch auf die Unterverzeichnisse a und b angewendet.

So erstellst Du .htaccess-Dateien

Das Erstellen von Dateien zur Konfiguration ist recht simpel, da es sich um reine Textdateien handelt.

1. Deine Website befindet sich auf Deinem eigenen Server – SSH

Wenn Du über Telnet oder SSH auf den Servercomputer der Website zugreifst, kannst Du die .htaccess-Datei unmittelbar auf dem Server im Texteditor bearbeiten. SSH ist die Bezeichnung für ein Netzwerkprotokoll, das den Zugriff auf Server in Remote-Rechenzentren über eine verschlüsselte Netzwerkverbindung ermöglicht.

2. Deine Website befindet sich auf dem Server des Hosts – FTP

FTP ist das Akronym für „File Transfer Protocol“, also eine Dateiübertragungsmethode. Das Protokoll legt die Übertragung von Dateien im IP-Netzwerk fest und ermöglicht sowohl das Herunterladen als auch das Hochladen von Informationen vom und auf den Server. Hast Du nur FTP-Zugriff auf den Servercomputer, musst Du eine Datei im Texteditor auf Deinem lokalen Computer erstellen und hochladen. Damit die Konfigurationsdatei vom Server erkannt wird, muss der Dateiname „.htaccess“ sein. Speichere die Datei unter „Alle Dateien“ ab.

Nutzt Du jedoch eine ältere Version von Windows, ist eine kleinere Problemumgehung erforderlich, da Windows das Speichern mit führenden Punkten in Namen nicht zulässt. Funktioniert das Abspeichern nicht, sichere die Datei vorübergehend als „htaccess.txt“. Um den Dateinamen zu ändern, musst Du den Befehl RENAME anwenden, um den Microsoft Windows Systemprozess CMD.exe im Feld DOS nutzen zu können:

RENAME [Laufwerk:] [Pfad] Filename1 Filename2

Du hast so das Laufwerk eingegeben, auf dem sich die Datei befindet und den vollständigen Dateipfad. Filename 1 ist die aktuelle Bezeichnung der Datei und Filename 2 ist der neue Name.

In der Praxis sieht das dann folgendermaßen aus:

RENAME C: Apache htdocs htaccess.txt .htaccess

In der zentralen Konfiguration von Apache kannst Du übrigens den Standardnamen .htaccess in jeden anderen Namen ändern.

Beispiele bei der Anwendung

Es gibt zahlreiche Verwendungsmöglichkeiten für .htaccess-Dateien. In der zentralen Konfigurationsdatei http.conf steht, was genau konfiguriert werden kann. Aus diesem Grund wird die Überschreibungsanweisung in http.conf verwendet. Beispielsweise ermöglicht die „AllowOverride All“-Direktive die Verwendung von .htaccess, um alle Regeln zu überschreiben. Möchtest Du wissen, was genau in der .htaccess-Datei konfiguriert werden kann, frage am besten Deinen Serveradministrator nach dem sogenannten AllowOverride-Wert. Dieser ist der einzige Administrator, der http.conf ändern kann. Willst Du derzeit gesperrte Anweisungen verwenden, solltest Du nach Änderungen fragen.

Die folgenden Werte können in der AllowOverride-Direktive erscheinen:

  1. AllowOverride None ignoriert .htaccess-Dateien.
  2. AllowOverride All überschreibt sämtliche Einstellungen.
  3. AllowOverride Options ermöglicht die Steuerung spezieller Verzeichnisattribute über die .htaccess-Datei.
  4. AllowOverride Limit definiert Zugriffsberechtigungen in der .htaccess-Datei.
  5. AllowOverride Indexes kann den Verzeichnisindex über die .htaccess-Datei steuern.
  6. AllowOverride FileInfo kann den Export bestimmter Dokumenttypen über die .htaccess-Datei definieren, wie zum Beispiel eine einzelne Fehlermeldung.
  7. AllowOverride AuthConfig definiert Autorisierungsanweisungen über die .htaccess-Datei, z. B. Kennwortschutzregeln.

Neben den Override-Direktiven finden sich in http.conf weitere Direktiven.

In den folgenden Abschnitten wird erläutert, wie Du Weiterleitungen einrichtest, 404-Fehlerseiten festlegst, einen Zugriffsschutz anlegst und .htaccess-Dateien schützen kannst.

Vermeidung von Doppeltem Inhalt (duplicate content)

1. Groß- und Kleinschreibung

Webseiten sollten einzig unter einer einzigen Schreibweise erreichbar sein, damit diese nicht doppelt von den Suchmaschinen indiziert werden. Das gilt insbesondere für URL-Schreibweisen in Groß- und Kleinschrift. Der nachfolgende Code bewirkt eine richtige Weiterleitung bei falscher Schreibweise.

Beispiel für Weiterleitung von Groß- nach Kleinschreibung in der URL:

RewriteCond %{REQUEST_URI} [A-Z]
RewriteRule ^(.*)$ /${lc:$1} [L,R=301]     

2. Fehlender Schrägstrich(slash) am Ende einer URL

Ist die URL mit und ohne Schrägstrich am Ende erreichbar, empfiehlt sich der nachfolgende Code:

Beispiel für Prüfung auf fehlender Schrägstrich am Ende der URL:

RewriteCond %{REQUEST_URI} ^/[^\.]+[^/]$
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1/ [R=301,L]   

Was genau sind Weiterleitungen?

Wird beispielsweise der Inhalt der URL in eine neue Adresse verschoben, ist eine Weiterleitung (Redirect)erforderlich. Grundsätzlich gibt es zwei Arten: die Client-Weiterleitung und die HTTP-Weiterleitungen.

Die clientseitige Umleitung umfasst die JavaScript-Umleitung und die Weiterleitung mithilfe von Meta-Refresh-Tags. Da Suchmaschinen jedoch nur HTTP-Weiterleitungen erkennen können, sind diese aus SEO-Sicht die richtige Wahl. Zusätzlich wird der Link-Saft der Seite über eine 301-Weiterleitung geliefert.

Was sind 301-Weiterleitungen?

Für die Weiterleitung über die .htaccess-Datei kannst Du zwei verschiedene Module verwenden: mod_alias und mod_rewrite.

1. Das ist mod_alias:

Apache selbst empfiehlt die Verwendung von mod_alias für die einfache Umleitung von URL A zu URL B. Die Implementierung von mod_alias funktioniert wie folgt:

Beispiel: Redirect 301 alte¬_Seite neue¬_Seite

mod_alias erlaubt auch reguläre Ausdrücke.

2. Das ist mod_rewrite:

Andererseits ermöglicht das Umschreibemodul nicht nur die Verwendung regulärer Ausdrücke, sondern auch den Einsatz unzähliger Regeln und Regelbedingungen. Daher ist es komplizierter.

Beispiel für eine Domainweiterleitung:

IfModule mod_rewrite.c
RewriteEngine on
RewriteCond %{HTTP_HOST} (www\.)?seo-docktor.de$ [NC]
RewriteRule ^(.*)$ $1 [L,R=301,NC]
/IfModule

Beispiel für einzelne Dateien weiterleiten:

IfModule mod_rewrite.c
RewriteEngine on
RewriteRule ^ example.html $ https:// beispiel.html [R = 301, L]
/IfModule

Das IfModule-Tag stellt eine Abfrage dar, die im Voraus prüft, dass die RewriteEngine des Apache-Servers aktiv ist und eine Umleitung durchführen kann. Ist dies nicht der Fall, wird der Code zwischen dem Start- und dem End-Tag nicht ausgeführt. Wird der Umleitungsbefehl ausgeführt, auch wenn die erforderliche Umschreibe-Engine nicht aktiviert ist, können schwerwiegende Probleme beim Zugriff auf die Website auftreten.

Was sind 404-Fehlerseiten?

Ist der Inhalt nicht mehr verfügbar, erfährt die Suchmaschine davon über den Statuscode 404. Eine 404-Fehlerseite sollte eingerichtet werden, damit der Benutzer ebenfalls wissen kann, wenn die Seite nicht erreichbar ist. Dies zeigt den Benutzern, warum die erforderliche URL nicht angezeigt wird und bietet den Benutzern im Idealfall mehr Navigationsunterstützung. Über die Integration der internen Suchfunktion und einiger nützlicher Links auf der 404-Seite können Benutzer auf der Seite gehalten werden. Durch die Gewährleistung einer besseren Benutzerfreundlichkeit wird ein indirekter SEO-Vorteil über die Anzeige von Fehlerseiten erzielt. Suchmaschinen belohnen eine gute Benutzerfreundlichkeit durch bessere Platzierungen.

So richtest Du eine 404-Fehlerseite ein

Erstelle eine 404-Fehlerseite wie folgt:

  1. Lege eine Datei wie „404-Fehlerseite.html“ im Hauptverzeichnis an und speichere diese.
  2. Fülle diese Fehlerdatei mit Text wie „Diese Seite existiert leider nicht“.
  3. Ändere die .htaccess-Datei und füge die folgende Zeile hinzu: ErrorDocument 404-error-page.html

„404-error-page.html“ ist der Dateiname, der im Fall des 404-Statuscodes erscheint. Befindet sich die entsprechende 404-Seite in einem Verzeichnis, weil sie nur auf dieses Verzeichnis angewendet werden soll, muss der Dateipfad angepasst werden:

ErrorDocument 404 /directory/404-errorpage.html

Du kannst zudem eine separate Fehlerseite für andere Fehlermeldungen einrichten.

Andere häufig auftretende Fehlerstatuscodes sind beispielsweise 401 (nicht autorisierter Zugriff), 403 (Zugriff verboten) und 500 (interner Serverfehler).

IP-Adressen, IP-Bereiche oder Namensadressen zulassen/sperren

Du kannst bestimmte IP-Adressen oder IP-Bereiche davon ausschließen, auf Deine Webseiten zuzugreifen. Ebenso kannst Du alle IP-Adressen ausschließen und nur ganz bestimmten den Zugriff erlauben. Anwender, die über eine nicht autorisierte IP-Adresse zugreifen, erhalten dann eine HTTP-Fehlermeldung (den HTTP-Status-Code 403), und der Zugriff wird ihnen verweigert. Die nachfolgenden Zeilen verweigern jeweils den Zugriff auf Deine Seite, wenn diese mit der Absenderkennung "aol.com" oder mit der IP-Adresse "192.168" Deine Seite aufrufen.

Deny from .aol.com
Deny from 192.168

Die Begriffe sind aus dem Englischen abgeleitet;
Deny from = verweigern von

So schützt Du Deine .htaccess-Datei

Ein zusätzlicher Schutz bewahrt .htaccess-Dateien vor externem Zugriff. Diese wichtige Schutzmaßnahme kannst Du mit folgendem Code einrichten:

RewriteEngine on

RewriteRule ^.htaccess$ - [F]

Versucht nun jemand von außerhalb über die URL die .htaccess-Datei aufzurufen, wird der Statuscode 403 „Forbidden“ angezeigt, sodass der Vorgang nicht ausgeführt werden kann.

Gibt es Alternativen zu .htaccess?

Neben der Konfiguration der Einstellungen wie oben beschrieben gibt es weitere Konfigurationsoptionen. Beispielsweise können PHP und andere Plugins im Content-Management-System verwendet werden. Mit dem WordPress SEO-Plugin von Yoast kannst Du über den Menüpunkt „Dateien editieren“ auf robots.txt- und .htaccess-Dateien zugreifen. So kannst Du Änderungen direkt in der Datei vornehmen.

Willst Du eine 301-Weiterleitung in Deinem WordPress-Blog einrichten, braucht es dafür eigene Regeln an einer bestimmten Stelle im Quellcode:

# BEGIN WordPress
IfModule mod_rewrite.c
RewriteEngine On
RewriteBase /
RewriteRule ^ index .php $ - [L]
RewriteCond% {REQUEST_FILENAME}! -f
RewriteCond% {REQUEST_FILENAME}! -d>
# hier stehen die eigenen Weiterleitungen
RewriteRule ^ example.html $ https://www.seo-lexikon.de/beispiel.html [R = 301, L] RewriteRule. /index.php [L]
/IfModule

Änderungen können nur im Stammverzeichnis vorgenommen werden, nicht in Unterverzeichnissen. Du solltest hier vorsichtig sein: Machst Du hier einen Fehler, kannst Du WordPress und Deine Domain möglicherweise nicht mehr verwenden und das Problem nicht mehr beheben.

Fehlermeldungen unterdrücken mit PHP

Dies ist ein sehr wichtiger Punkt, da der Dateipfad sichtbar wird, solange PHP eine Fehlermeldung ausgibt. In einem WordPress-Blog ist es sehr einfach, indirekt PHP-Fehler zu generieren, um die Fehlerausgabe einschließlich des Pfads zu erhalten. Du musst kein Administrator oder Experte sein, um diesen Vorgang auszuführen. Das Aufrufen bestimmter Kerndateien von WordPress und Plugin-Dateien direkt in der Adressleiste des Browsers führt zu schwerwiegenden Fehlern des PHP aufgrund des Mangels an erforderlichen und referenzierten Funktionen in WordPress.

Lassen die Einstellungen von Server und PHP die Anzeige von Fehlern zu, wird im Browser ein Anwendungsfehler angezeigt. Fast niemand kann etwas mit der Fehlerausgabe anfangen, aber für einen Hacker sind dies sehr wertvolle Informationen, mit denen nach Hintertüren der Domain gesucht und diese ausgenutzt werden können. Dieses Problem kann durch einen einfachen Eintrag in der .htaccess-Datei gelöst werden: php_flag display_errors Off

Fazit

Jeder Webmaster sollte wissen, wie man .htaccess-Dateien richtig verwendet. Der Vorteil der Dateien liegt auf der Hand: Sie ermöglicht kurzfristige Änderungen direkt auf der Serverseite. Sei bei der Verwendung der Konfigurationsdatei jedoch vorsichtig, da falsche Informationen in der Datei schwerwiegende Schäden verursachen können. Im Zweifelsfall solltest Du bei geschulten Webentwicklern nachfragen, um Fehler zu vermeiden.