htaccess – Ein mächtiges SEO-Werkzeug

Spätestens wenn es bei einem Relaunch um die Einrichtung von Weiterleitungen geht oder die Website auf von HTTP auf HTTPS (SSL-Verschlüsselung) umgestellt wird, wird die Einrichtung und die Einstellungen einer .htaccess-Datei zum Thema. Doch was verbirgt sich hinter der Bezeichnung eigentlich? Der Name „.htaccess“ ist die Kurzform von HyperText-Access, also HyperText-Zugriff. Es handelt sich um eine Konfigurationsdatei, die es möglich macht auf einem Apache Webserver verzeichnisbezogene Regeln aufzustellen. Solche .htaccess-Hacks sind in vielen Fällen sehr effizient.

 

 

 

 

 

 

 

 

 

 

 

Was wird mit der .htaccess geändert?

Mit der .htaccess-Datei kann man die Konfigurationseinstellungen des Webservers (Apache) ändern, auch wenn man keinen Zugriff auf die Konfigurationsdatei „httpd.conf“ des Apache HTTP Server hat. Die vorgenommen Einstellungen wirken sich auf das Verzeichnis in dem die .htaccess liegt und die Unterverzeichnisse aus. Es ist möglich, in jedem Verzeichnis bzw. Unterverzeichnis wiederum eine .htaccess mit spezifischen Einstellungen anzulegen. Kurze Zeit nach dem eine .htaccess-Datei in ein Verzeichnis des Webservers geladen wurde, greifen bereits die vorgenommen Einstellungen. Ein Neustart des Servers ist nicht nötig und in der Regel beim Hosting-Provider auch nicht beeinflussbar.

Dies betrifft folgende Möglichkeiten:

  • Zugriffsschutz
  • Sperrungen
  • Fehlermeldungen (Servercode)
  • Weiterleitungen

Die .htaccess wird im Root-Verzeichnis der Website abgelegt. Dazu erstellt man lediglich mit dem Editor eine Datei, die ohne Dateiendung mit dem Dateinamen „.htaccess“ und der Codierung ANSI abgespeichert wird. Will man die .htaccess bearbeiten, geht das auf Windows aufgrund der fehlenden Dateiendung nicht mit einem einfachen Doppelklick. Man kann das aber ganz leicht so lösen: Programm Editor starten > Datei öffnen

Hier kann man dann die .htaccess bearbeiten. Die Einstellungen greifen in dem aktuellen Verzeichnis und dessen Unterverzeichnissen. Ausnahmen lassen sich durch eine .htaccess in einem Unterverzeichnis schaffen.

Vorsicht bei Änderungen der .htaccess

Bei jedem Aufruf einer URL wird die .htaccess ausgewertet und auf jede Datei angewandt. Besteht ein Seitenaufruf aus einer HTML-Datei, 4 CSS, 3 Javascript und 32 Bilddateien wird für jede Datei geprüft, ob eine relevante Anweisung besteht.

Das heißt aber auch, je umfangreicher und komplexer die Anweisungen in der .htaccess sind, desto mehr können diese zu Lasten der Performance gehen. Es muss parallel kontinuierlich getestet werden, wo die akzeptable Obergrenze liegt. Letztendlich hängt die Anzahl von Anweisungen in der .htaccess von dem Arbeitsspeicher des Webservers ab.

Wichtig!
Jede Änderung muss geprüft und direkt – am besten sofort – im Livebetrieb getestet werden. Denn schon kleine Fehler erzeugen einen „Server Error 500“. Die Schreibweise, also die Syntax der .htaccess, muss zu 100 Prozent korrekt sein, denn eine falsch geschriebene Anweisung kann den Seitenzugriff auf dem kompletten Server verhindern.

Falls trotzdem ein Fehler gemacht wurde und die Website nicht mehr angezeigt wird, ist der schnelle Roll-back enorm hilfreich und nützlich. Oft steht keine Testumgebung zur Verfügung und die Einstellungen über die .htaccess werden daher regelmäßig im Livebetrieb vorgenommen, genau so wie mögliche Änderungen. Deshalb ist es ratsam, immer eine Sicherungskopie der zuvor funktionierenden .htaccess anzulegen. Hierzu kann eine lokale Sicherungskopie erstellt werden oder man benennt die .htaccess auf dem Server unmittelbar vor dem Hochladen (Upload) der neuen .htaccess  um. Sollte es dann zu einem Error 500 kommen, reicht es aus die beiden Dateien umzubenennen, so dass die Backup-htaccess dann wieder .htaccess heißt.

Die Nutzung der .htaccess ist bei manchen Hosting-Providern eingeschränkt und es gibt keine Garantie, dass jedes Script überall läuft. Alle Anweisungen sind deshalb immer zu testen!

Häufigster Anwendungsfall: Weiterleitungen

Beispiele für Weiterleitungen:

  • Umstellung auf SSL
  • Domain ausschließlich auf www.
  • Neue Verzeichnisstruktur

Bei Änderungen der Website-Struktur ist es sehr wichtig, für jede weggefallene URL eine Weiterleitung einzurichten. Die Erfahrung zeigt: Ohne Weiterleitungen sind hohe Sichtbarkeitsverluste die Regel!

Weiterleitung als 301 oder 302?

301: moved permanently vs. 302: moved temporary

Wenn eine Seite nur temporär, zum Beispiel aufgrund von Wartungsarbeiten, nicht verfügbar ist, ist 302 der richtige HTTP-Statuscode. Haben sich die Navigationsstruktur und damit die Verzeichnisse grundsätzlich geändert, muss eine permanente Weiterleitung eingerichtet werden. Damit weiß der Suchmaschinen-Bot, dass die alte Adresse nicht mehr zu crawlen ist und stattdessen die neue Adresse gecrawlt werden soll und in den Index aufzunehmen ist.

Weiterleitung einrichten

Beispiel:

#301 Weiterleitung
RewriteEngine On
RewriteRule ^alteDatei.html$ /neueDatei.html [R=301,L]

Erklärung:

RewriteEngine On: Mit dieser Zeile wird für die Weiterleitung die Funktion aktiviert. Diese Anweisung ist immer erforderlich, wenn RewriteRules angewandt werden sollen.

#: Die erste Zeile ist ein Kommentar. Mit # wird der Kommentar eingeleitet. Alles was in dieser Zeile hinter # steht, wird vom Webserver nicht ausgewertet.

Regular Expressions

Die Syntax der RewriteRules basiert auf regulären Ausdrücken (Regular Expressions).

Die Zeichen ^ und $ markieren den Anfang und das Ende eines Suchmusters, auf das sich die Anweisung bezieht. Entsprechend dieser Anweisung wird in den URLs gesucht. In diesem Fall ist das die umzuleitende Seite. Der Punkt „.“ steht in regulären Ausdrücken für ein beliebiges Zeichen. Wenn wir wirklich einen Punkt meinen, dann wird die Bedeutung des „.“ mit einem Backslash . entwertet ( bedeutet also: exakt das nächste Zeichen).

^          Beginn eines Suchmusters
$          Ende des vorangegangenen Suchmusters, kann aber auch eine Variable einleiten
.           Beliebiges Zeichen
+          Beliebige Anzahl von Zeichen, ein oder mehrmaliges Vorkommen
*           Beliebige Anzahl von Zeichen; kein, ein oder mehrmaliges Vorkommen
Backslash entwertet ein Zeichen
( )         Runde Klammern gruppieren Teilausdrücke und merken den String als Variable z.B. $1, $2

Am Ende der Zeile wird mit der RewriteRule der Servercode für die Weiterleitung (Redirect) in eckigen Klammern angegeben. Mit dem zusätzlichen Parameter L (Letzter, Last) kann man festlegen, dass weitere Anweisungen für diese URL in der .htaccess Datei zu ignorieren sind.

 Beispiel wie oben:

#301 Weiterleitung
ReRule ^alteDatei.html$ /neueDatei.html [R=301,L]
…writeEngine On
Rewrite

RewriteRule ^altesVerzeichnis$ /neuesVerzeichnis [R=301,L]

Alternative Anweisung für diesen Redirect

#Anweisung_Kategorie URL_alt URL_neu

Redirect 301 /alteDatei.html /neueDatei.html

Redirect 301 /altesVerzeichnis /neuesVerzeichnis

Redirect 301 /verzeichnis/unterverzeichnis https://www.domain.de/neuesverzeichnis/neuesunterverzeichnis

 Weiterleitung von einem Verzeichnis auf die Startseite

RewriteRule ^ordner-geloescht(.*)$ / [R=301,L]

Umleitung auf www.

Soll eine Domain generell auf www. laufen, muss eine Weiterleitung eingerichtet werden. Sonst ist die Domain mit und ohne www. verfügbar und das kann zu Ranking-Verlusten führen.

RewriteCond %{HTTP_HOST} ^name-der-domain.de$ [NC]

RewriteRule ^(.*)$ http://www.name-der-domain.de$1 [R=301,L]

http nach https

Stellt man die Seite auf https um, ist ebenfalls eine Weiterleitung in der .htaccess erforderlich.

RewriteCond %{HTTPS} !=on
RewriteCond %{HTTP_HOST} ^www.domain.de$
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

Alle Verzeichnisse mit Trailing-Slash

Die folgende Weiterleitung verhindert, dass ein Verzeichnis sowohl mit als auch ohne Trailing-Slash aufrufbar ist.

RewriteEngine on
RewriteCond %{REQUEST_URI} /+[^.]+$
RewriteRule ^(.+[^/])$ %{REQUEST_URI}/ [R=301,L]

Warum macht man das?

Beispiel:
https://domain.de/reiseart/tauchreise
https://domain.de/reiseart/tauchreise/

Die beiden Verzeichnisse oben sind für Suchmaschinen wie Google zwei unterschiedliche Adressen. In diesem Fall handelt es sich dann um zwei Duplikate. Und Duplicate Content ist aus SEO-Sicht ein großer Nachteil für das mögliche Ranking einer Seite.

Spezielle Lösung: ein Praxisbeispiel

Die folgenden Anweisungen wurden für einen Kunden entwickelt, der im Rahmen eines Relaunches von modified xtCommerce auf Shopware umgestiegen ist.

Ziel:

URLs wie
http://www.domain.de/Produkt-fuer-alle-Faelle::12345.html

sollten weitergeleitet werden nach

http://www.trade4me.de/search?sSearch=60208

Mit der Artikelnummer in dieser URL leitet Shopware intern automatisch weiter auf die Produktseite, wie sie im SEO-Router gespeichert ist.

# Alle Artikelnummern werden an die Shopware Suche übergeben
RewriteCond %{HTTP_HOST} ^(www.)?trade4me.de
RewriteRule ^(.+)[:]{2}([0-9]{5}).html(.*)$ https://%{HTTP_HOST}/search?sSearch=$2 [R=301,L]

Erklärung:

^(.+)[:]{2}([0-9]{5}).html(.*)$

^             Beginn des Suchmusters
(.+)         Ein oder mehrere Zeichen
[:]{2}        Suche nach zwei ::
([0-9]{5})  Danach folgen fünf Zeichen, die aus Zahlen von 0-9 bestehen
.html      Darauf folgt .html. Denn es gab auch URLs mit :::, darin sind ja auch zwei :: enthalten
(.*)          Danach können noch Zeichen folgen, müssen aber nicht
$             Ende des Suchmusters

 

Weitere Anwendungsfälle für die .htaccess

Eigene Error 404-Seite

Anweisung für den Aufruf einer bestimmten Seite bei einem Error 404.

ErrorDocument 404 URLderFehlerseite

Beispiel:

ErrorDocument 404 /404.php

IP-Adresse aussperren

Es ist möglich, den Aufruf durch bestimmte IPs zu sperren. Hierzu ist der folgende Eintrag notwendig:

order allow,deny 
deny from 192.168.2.17 
deny from 10.10.20.63 
allow from all

Will man die ganze Site sperren, so wird die .htaccess in das Hauptverzeichnis gelegt. Geht es nur um einzelne Ordner, sollte die .htaccess hingegen in die entsprechenden Ordner gepackt werden.

Passwortschutz

Sollen die Website oder einzelne Verzeichnisse mit einem Passwort geschützt werden, sind zwei Dateien erforderlich:

.htaccess & .htusers

Eintrag .htaccess

# .htaccess-Datei fuer das Verzeichnis /test 
AuthType Basic 
AuthName "TopSecret-Bereich" 
AuthUserFile /[SERVERPFAD]/[UNTERVERZEICHNISSE]/.htusers
AuthPGAuthoritative Off
require user  Günther Emil Maria

Erklärung zu diesen .htaccess Anweisungen:

AuthType: Steht für den Typ der Authentifizierung.

AuthName: Wird in dem Pop-up-Fenster angezeigt, das sich beim Aufrufen des geschützten Bereichs öffnet.

AuthUserFile: Angabe des absoluten Pfads der Datei, welche die Daten zur Authentifizierung (Benutzernamen und Passwörter) enthält.

Der Pfad besteht aus:
Serverpfad:
Der absolute Pfad des Accounts; zu finden im Kundenmenü oder wenn sich per FTP eingeloggt wird können die Unterverzeichnisse der Webspace betrachtet werden.

require user: Hier kann festgelegt werden, welchen Benutzern aus dem AuthUserFile der Zugriff auf den geschützten Bereich gewährt werden soll.

Eintrag .htusers

# .htusers-Datei für Benutzernamen und Passwörter
Fritz:INxSqKMwIc 
Erna:begslbtrox123
Max:ase52SH459B
Ilse:pTcHo9kefF
Knut:INUhFBdkNZ6RQ
Maria:IN2GiNEVet23

Inhalte vor dem Doppelpunkt sind die Benutzernamen. Danach handelt es sich um die Passwörter zu den einzelnen Benutzern. Zu beachten ist hierbei, dass in dieser Datei die Passwörter nur in verschlüsselter Form gespeichert sein dürfen. Eine Möglichkeit, die Passwörter zu verschlüsseln, bietet beispielsweise die Seite www.htpasswdgenerator.de.

Die Anwendung der .htaccess-Hacks ist einfach

Die oben genannten Bespiele, um die .htaccess-Datei zur Server-Konfiguration zu verwenden, geben einen Einblick in die Funktion sowie mit Tipps und Tricks im Umgang mit dieser mächtigen Datei. Die Befehle werden direkt nach Upload vom Webserver umgesetzt. Ebenso können vorgenommene Änderungen auch wieder zurückgenommen werden.

 

Weiterführende Quellen:

Nicht genug Infos zu Funktion von Webserver und .htaccess:

https://wiki.selfhtml.org/wiki/Webserver/htaccess
http://301re.direct
http://online-sucher.de/htaccess.html
http://www.webschmoeker.de/grundlagen/was-ist-eine-htaccess-datei/
https://jweiland.net/know-how/internet/htaccess-konfigurieren.html

Weiterleitungen testen

http://301re.direct/redirect-checker/
http://www.redirect-checker.org/index.php

Reguläre Ausdrücke:

In dem Beitrag wurde nur ein kleiner Teil der Möglichkeiten von regulären Ausdrücken angerissen. Das Thema ist „Regular Expressions“ komplex und es geht bereits stark in Richtung fortgeschrittenes Wissen und Verständnis von IT & Programmierung. Wer sich dafür interessiert und mehr wissen möchte, kann sich auf den folgenden Seiten informieren und tiefer einsteigen:

https://wiki.selfhtml.org/wiki/Perl/Regul%C3%A4re_Ausdr%C3%BCcke
https://danielfett.de/de/tutorials/tutorial-regulare-ausdrucke/