Was versteht man unter .htaccess?

Die .htaccess Datei ist eine textbasierte Datei auf Webservern wie Apache, welche es berechtigten Nutzern ermöglicht, verzeichnisspezifische Konfigurationen wie etwa Weiterleitungen oder einen Passwortschutz einzurichten.
Im Regelfall befindet sich die .htaccess Datei im Hauptverzeichnis der Website. Die Einstellungen der Datei sind im aktuellen Verzeichnis wie auch in allen Unterverzeichnissen wirksam.

Viele CMS Programme wie Joomla und Typo3 liefern bereits eine vorgefertigte .htaccess Datei, welche über die wichtigsten Regeln verfügt, damit die Website als Suchmaschinen "freundlich" eingestuft wird.


Erstellen einer .htaccess Datei

Webserver mit Telnet oder SSH Zugängen ermöglichen eine Erstellung sowie das Bearbeiten der Datei direkt am Server. Bei Servern mit FTP Zugang muss die Datei jedoch lokal erstellt werden und anschließend hochgeladen werden. Eine lokale Erstellung ist mit allen gängigen Texteditoren möglich.

Der Beginn des Dateinamens mittels Punkt ist für Unix-Systeme üblich. Verzeichnisspezifische Konfigurationsdatein beginnen bei Unix stets mit einem Punkt. Durch den Punkt wird die .htaccess Datei als "versteckt" gekennzeichnet. Server Administratoren sowie berechtigte Nutzer können mittels der .htacces Datei schnell und unkompliziert Einfluss auf die Konfiguration des Servers nehmen. Dadurch können z.B: ganze Verzeichnisse geschützt werden, oder man kann auch eigene Fehlerseiten sowie Weiterleitungen einrichten.


Warum ist meine .htaccess Datei in FileZilla nicht sichtbar?

Falls Ihre .htaccess Datei im FileZilla nicht angezeigt werden sollte lässt sich das durch einen Klick auf den Menüpunkt Server und auswählen der Option Auflistung versteckter Datein erzwingen beheben.


Startseite mit der Option DirectoryIndex definieren

Beim Aufrufen Ihrer Domain (www.ihredomain.tld) ohne Verwendung von Dateinamen (www.ihredomain.tld/dateiname.html) wird als Startseite standardgemäß die "index.html" Datei verwendet, sollte keine index.html Datei vorhanden sein folgt in der Reihenfolge die "index.php" Datei.

Sie können aber auch über die .htaccess Datei eine benutzerdefinierte Startseite mit folgender Anweisung verwenden.

DirectoryIndex DATEINAME.html index.html index.php

Mit dieser Anweisung legen Sie die Datei "DATEINAME.html" als Startseite fest, sollte diese nicht existieren wird als nächstes die Datei index.html verwendet.


Passwort geschützten Bereich einrichten

Um ein Verzeichnis oder Datein mittels .htaccess zu schützen müssen Sie folgenden Code in der .htaccess Datei hinzufügen.

AuthType Basic
AuthName "Bitte melden Sie sich mit Ihrem Benutzer an"
AuthUserFile /kompletter Pfad der Passwortdatei/.htpasswd
Require valid-user

Zusätzlich muss noch eine weitere Datei .htpasswd erstellt werden. Diese Datei dient zum Speichern der berechtigen Benutzername sowie deren Passwörter.Passworter dürfen in Unix-Systemen nur verschlüsselt eingetragen werden. Der Inhalt der .htpasswd Datei kann z.B. mit dem Tool htpasswd erzeugt werden.

Diese Datei können Sie sich jedoch auch in Ihrem Control Panel unter dem Modul Geschützte Verzeichnisse erstellen.

Beispiel der .htpasswd Datei:

User1:kWZTbvy#8Y
User2:KyQG7Uka$j
User3:rX7QWBSxa

Die .htaccess Datei muss sich in dem Verzeichnis befinden, welches durch das Passwort geschützt werden soll oder die Datei liegt, welche geschützt werden soll. Idealerweise sollte die .htpasswd Datei oberhalb des Rootverzeichnisses abgelegt werden.


Weiterleitung auf https (eigenes SSL Zertifikat) mit .htaccess

Für eine Weiterleitung auf eine https gesicherte Adresse, mit einem eigenen Zertifikat, fügen Sie bitte folgende Einträge in Ihrer .htaccess-Datei ein.

RewriteCond %{REQUEST_SCHEME} ^http$
RewriteCond %{HTTP_HOST} ^(www\.)?(.+)$ [NC]
RewriteRule ^ https://www.%{HTTP_HOST}%{REQUEST_URI} [NE,L,R]

Eine Weiterleitung auf https kann auch in Ihrem Control Panel bei bestehendem Zertifikat im Modul Domains eingerichtet werden.


Domain mittels .htaccess in Unterordner weiterleiten

Haben Sie Ihre Homepage, CMS, Onlineshop oder andere Hosting Software in einen Unterordner auf Ihrem Hosting Paket installiert, können Sie mit folgendem Eintrag in der .htaccess in diesen Unterordner weiterleiten. Beim Aufruf der Domain wird dann automatisch in diesen Unterordner weitergeleitet:

RewriteEngine on
RewriteCond %{HTTP_HOST} ^(www\.)?domain.tld$ [NC]
RewriteCond %{REQUEST_URI} !UNTERVERZEICHNIS/
RewriteRule ^(.*)$ UNTERVERZEICHNIS/$1 [L]

In manchen Fällen, wenn es sich zum Beispiel um eine Subdomain handelt, funktioniert die Variante 1 nicht fehlerfrei. Hier sollte dann folgender Code verwendet werden:

RewriteEngine on
RewriteCond %{HTTP_HOST} ^subdomain\.domain.tld$ [NC]
RewriteCond %{REQUEST_URI} !^/subdomain/
RewriteRule ^(.*)$ /subdomain/$1 [L]

Weiterleitung (Redirect 301) von "nicht www" auf "www" mittels .htaccess

Diese Methode wird oft empfohlen um zu verhindern, dass Suchmaschinen (vor allem Google), den Inhalt Ihrer Webseite als Duplicate Content (gleicher Inhalt auf mehreren Seiten) wertet, da Ihre Seite im Normalfall mit und ohne www erreichbar ist. Dies kann zu einer schlechteren Platzierung bei den Suchmaschinen führen. Mit folgendem Code können Sie Ihre Domain von "nicht www" (z.B.: http://ihredomain.tld) auf "www" (z.B.: http://www.ihredomain.tld) weiterleiten

RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\.ihredomain\.tld$ [NC]
RewriteRule ^(.*)$ http://www.ihredomain.tld/$1 [L,R=301]

Man kann natürlich auch von "www" auf "nicht www" weiterleiten. Dazu verwenden Sie einfach folgenden Code:

RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.ihredomain\.tld$ [NC]
RewriteRule ^(.*)$ http://ihredomain.tld/$1 [L,R=301]

Auflistung der in dem Verzeichnis vorhandenen Daten erlauben mit .htaccess

Standardmäßig ist die Auflistung von Verzeichnissen und Dateien auf unseren Servern deaktiviert. Das bedeutet, wenn sich keine index.html oder index.php Datei im Verzeichnis befindet, wird die Meldung "Forbidden" vom Server ausgegeben. Sie können die Auflistung der Verzeichnisse oder Dateien aber mit Hilfe eines Eintrags in der .htaccess Datei erlauben:

Options +Indexes

Einzelne IP Adressen oder ganze IP Bereiche (IP Range) sperren mit .htaccess

Sie können durch folgende Einträge in der .htaccess Datei bestimmte IP Adressen oder auch ganze IP Adressbereiche sperren. Dies kann zum Beispiel nützlich sein, wenn durch eine bestimmte IP Adresse Angriffsversuche statt finden.
Sollen mehrere einzelne IP Adresse gesperrt werden, wird jede IP Adresse in eine eigene Zeile eingetragen. Wird die Seite von einer gesperrten IP Adresse aufgerufen erhält der Besucher den Fehlercode 403 (HTTP-Fehler 403 Forbidden).

order allow,deny
# Einzelne IP Adresse sperren:
deny from 192.168.5.200
# Kompletten IP Bereich von 192.168.5.1 - 192.168.5.255 sperren:
deny from 192.168.5.
# möglich ist auch den Class C IP Bereich von 192.168.5.1 - 192.168.5.255 zu sperren:
deny from 192.168.5.0/24
allow from all

Einzelne IP Adressen oder ganze IP Bereiche (IP Range) zulassen mit .htaccess

Sie können durch folgende Einträge in der .htaccess Datei bestimmte IP Adressen oder auch ganze IP Adressbereiche zulassen. Dies kann zum Beispiel nützlich sein, wenn der Zugriff auf den Administratorbereich einer Webseite oder bestimmte Verzeichnisse einer Webseite, nur für eine gewisse IP Adresse oder mehrere IP Adressen erlaubt sein soll.

order allow,deny
# Alle anderen IP Adressen werden nicht zugelassen:
deny from all
# Einzelner IP Adresse Zugriff erlauben:
allow from 192.168.5.200
# Kompletten IP Bereich 192.168.5.1 - 192.168.5.255 Zugriff erlauben:
allow from 192.168.5.

301 Weiterleitung (Redirect) auf andere Seite mit .htaccess

Eine 301 Weiterleitung von Ihrer Domain auf eine andere Webseite kann mit folgender Zeile in der .htaccess Datei erstellt werden:

Redirect 301 / http://www.anderedomain.tld

Weiterleitung bei Umzug auf eine neue Domain mit Weitergabe des Pfades

RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^(www\.)?altedomain.tld$ [NC]
RewriteRule (.*) https://www.neuedomain.tld/$1 [R=301,L]


301 Weiterleitung von alter URL zu neuer URL mit und ohne .html am Ende

Eine Weiterleitung von einer alten URL auf eine neue URL kann mit folgender Eingabe erreicht werden:

RewriteRule ^alteseite(/$|\.html) /neueseite.html [R=301,L]


Lösung für Fehlermeldung: Option FollowSymLinks not allowed here (Internal Server Error)

Eine sehr häufige Ursache für einen "Internal Server Error" kann sein, dass Sie die Option "FollowSymLinks" in Ihrer .htaccess Datei gesetzt haben. Zusätzlich zur Anzeige der Nachricht "Internal Server Error" in Ihrem Browser wird auch im Error Log (dieses finden Sie im Control Panel Modul Entwicklung) der Fehler "Option FollowSymLinks not allowed here" aufgezeichnet.

Um diesen Fehler zu beheben, müssen Sie die Option "FollowSymLinks" in allen .htaccess Dateien Ihrer Webseite durch "SymLinksIfOwnerMatch" ersetzen.

Der aktuelle Eintrag könnte z.B. so aussehen:

Options -Indexes +FollowSymLinks
Diesen müssen Sie auf:
Options -Indexes +SymLinksIfOwnerMatch
ändern.