Die .htaccess-Datei ist eine Konfigurationsdatei des Apache HTTP Servers, mit der du Servereinstellungen gezielt für einzelne Verzeichnisse einer Website festlegen kannst, ohne die zentrale Serverkonfiguration anfassen zu müssen. Der Name beginnt mit einem Punkt — das macht die Datei auf Unix- und Linux-Systemen zu einer versteckten Datei, die im normalen Dateimanager nicht angezeigt wird. Im Online-Marketing und in der SEO spielt sie vor allem bei URL-Weiterleitungen, der Durchsetzung von HTTPS und der Verwaltung kanonischer URLs eine wichtige Rolle.
Geschichte und Herkunft
Die .htaccess-Datei hat ihre Wurzeln im frühen World Wide Web. Der NCSA HTTPd, einer der ersten Webserver überhaupt, wurde 1993 von Robert McCool am National Center for Supercomputing Applications (NCSA) der University of Illinois entwickelt. Dieser Server führte das Konzept der verteilten Konfigurationsdateien ein — also Dateien, die Servereinstellungen direkt im jeweiligen Verzeichnis speichern, statt alles zentral zu verwalten.
Als McCool die NCSA Mitte 1994 verließ, stockte die Weiterentwicklung des Servers. Eine Gruppe von Entwicklern übernahm den Quellcode, flickte ihn mit zahlreichen Patches zusammen und veröffentlichte im April 1995 den Apache HTTP Server (Version 0.6.2). Der Name geht laut einer frühen Version der Projektwebseite auf die vielen Patches zurück — „a patchy server“. Das .htaccess-Konzept übernahm Apache direkt aus dem NCSA-Erbe und baute es weiter aus.
Bereits im April 1996 überholte Apache den NCSA HTTPd als meistgenutzten Webserver weltweit. Diese Dominanz hielt über zwei Jahrzehnte. Heute liegt Apache je nach Quelle bei einem Marktanteil von rund 25 bis 35 Prozent aller Webserver — Nginx hat Apache in den letzten Jahren bei neuen Installationen zunehmend abgelöst, Apache bleibt aber einer der meistgenutzten Server, insbesondere im Shared Hosting und im LAMP-Stack (Linux, Apache, MySQL, PHP).
Wie die .htaccess-Datei funktioniert
Die .htaccess-Datei ist eine einfache Textdatei ohne Dateiendung — nur der Name .htaccess. Du legst sie direkt in das Verzeichnis, für das die Einstellungen gelten sollen. Apache liest sie automatisch bei jeder Anfrage an dieses Verzeichnis und an alle Unterverzeichnisse darunter.
Das Besondere: Du brauchst keinen Zugriff auf die zentrale Serverkonfigurationsdatei (httpd.conf), die nur Serveradministratoren zugänglich ist. Das macht .htaccess besonders nützlich für alle, die eine Website auf einem Shared-Hosting-Server betreiben, wo tausende Kunden denselben Server teilen. Jede Website kann ihre eigene .htaccess-Datei haben, ohne die anderen zu beeinflussen.
Was du in der .htaccess-Datei erlauben oder verbieten kannst, legt der Serveradministrator über die Direktive AllowOverride fest. Steht dort AllowOverride None, ignoriert Apache deine .htaccess-Datei vollständig. Steht dort AllowOverride All, kannst du nahezu alle erlaubten Direktiven verwenden.
Die Syntax der .htaccess-Datei entspricht jener der zentralen Apache-Konfiguration. Kommentare beginnen mit einem #.
Typische Einsatzbereiche
Der häufigste Einsatz der .htaccess-Datei ist die URL-Umleitung (Redirect). Wenn du eine Seite unter einer neuen Adresse erreichbar machen willst — zum Beispiel weil du /alte-seite.html in /neue-seite/ umbenannt hast —, richtest du einen 301-Redirect ein. Das signalisiert Suchmaschinen, dass die Adresse dauerhaft gewechselt hat, und überträgt die bisherige Rankingkraft auf die neue URL.
Das dafür zuständige Apache-Modul heißt mod_rewrite. Es ermöglicht flexible Umschreibungsregeln und ist in der .htaccess-Datei über den Block <IfModule mod_rewrite.c> aktivierbar. Eine typische Weiterleitungsregel sieht so aus:
RewriteEngine On
RewriteRule ^alte-seite\.html$ /neue-seite/ [R=301,L]
WordPress nutzt mod_rewrite genau auf diese Weise. Die sprechenden Permalinks wie beispiel-seite.at/blog/mein-beitrag/ statt beispiel-seite.at/?p=123 funktionieren nur, weil WordPress beim Aktivieren der Permalinks automatisch eine .htaccess-Datei mit den nötigen Regeln anlegt. Der entsprechende Block sieht in jeder WordPress-Installation ähnlich aus und ist mit # BEGIN WordPress und # END WordPress markiert.
Weitere verbreitete Einsatzbereiche sind die Erzwingung von HTTPS (Weiterleitung aller HTTP-Anfragen auf die verschlüsselte HTTPS-Version), das Festlegen einer kanonischen Domain (zum Beispiel ob deine Seite mit oder ohne www erreichbar sein soll), benutzerdefinierte Fehlerseiten für 404-Fehler, das Sperren einzelner IP-Adressen und das Einrichten von Passwortschutz für Verzeichnisse über .htpasswd.
Bedeutung für SEO
Für die Suchmaschinenoptimierung ist die .htaccess-Datei ein direktes Steuerungsinstrument auf Serverebene. Drei Punkte sind dabei besonders relevant.
Erstens: 301-Weiterleitungen. Wenn sich URLs ändern — sei es durch einen Relaunch, eine veränderte Permalink-Struktur oder eine Domain-Migration —, teilst du Suchmaschinen über 301-Redirects mit, wo der Inhalt jetzt zu finden ist. Ohne diese Weiterleitungen würde Google die alten URLs als nicht mehr vorhanden behandeln, und aufgebautes Ranking geht verloren.
Zweitens: Kanonisierung. Wenn dieselbe Seite unter mehreren URLs erreichbar ist (zum Beispiel mit und ohne www, mit und ohne abschließendem Schrägstrich), teile dem Server per .htaccess mit, welche Version die bevorzugte ist. Das verhindert, dass Suchmaschinen doppelten Inhalt (Duplicate Content) sehen und das Ranking auf mehrere URLs aufteilen.
Drittens: HTTPS-Erzwingung. Seit Google HTTPS als Rankingfaktor gewichtet, ist eine saubere Weiterleitung von HTTP auf HTTPS ein SEO-Grundstein. Per .htaccess lässt sich das zuverlässig auf Serverebene umsetzen.
Leistung und Kritik
Die Apache-Dokumentation selbst empfiehlt, .htaccess-Dateien wenn möglich zu vermeiden, wenn du Zugriff auf die zentrale Serverkonfiguration hast. Der Grund ist Performance: Apache muss bei jeder einzelnen Anfrage an eine Datei alle .htaccess-Dateien im gesamten Verzeichnispfad einlesen und prüfen — auch dann, wenn gar keine solche Datei vorhanden ist. Bei einem tief verschachtelten Pfad wie /www/htdocs/beispiel/unterseite/ durchsucht Apache bis zu vier verschiedene Verzeichnisse nach .htaccess-Dateien, bevor er die eigentliche Datei ausliefert.
Für Websites auf dedizierten Servern oder in Serverumgebungen mit direktem Konfigurationszugriff ist es effizienter, die Direktiven direkt in einem <Directory>-Block in der Hauptkonfiguration zu hinterlegen. Diese wird beim Serverstart einmalig eingelesen, nicht bei jeder Anfrage neu.
Ein weiterer wichtiger Unterschied: Nginx, der mittlerweile in vielen Bereichen mit Apache konkurriert, unterstützt .htaccess-Dateien grundsätzlich nicht. Dort werden Weiterleitungen und URL-Regeln in der zentralen Nginx-Konfiguration hinterlegt.
Häufige Fragen
Was macht die .htaccess-Datei in WordPress?
WordPress legt beim Aktivieren von sprechenden Permalinks automatisch eine .htaccess-Datei an, die alle Anfragen über mod_rewrite durch index.php leitet. So kann WordPress URLs wie beispiel-seite.at/kategorie/beitrag/ auflösen, obwohl solche Pfade im Dateisystem gar nicht existieren. Du erkennst den WordPress-Block an den Kommentaren # BEGIN WordPress und # END WordPress.
Warum bekomme ich einen 500-Fehler, wenn ich die .htaccess-Datei bearbeite?
Ein 500 Internal Server Error nach Änderungen an der .htaccess-Datei ist fast immer ein Syntaxfehler — ein falsch gesetztes Zeichen, ein fehlender Punkt oder eine ungültige Direktive. Apache reagiert auf solche Fehler mit einem internen Serverfehler, statt die fehlerhafte Zeile zu ignorieren. Erstelle vor jeder Änderung eine Sicherungskopie der Datei, damit du im Fehlerfall schnell zurückkehren kannst.
Funktioniert .htaccess auch auf Nginx-Servern?
Nein. Nginx kennt kein .htaccess-Konzept und ignoriert solche Dateien vollständig. Weiterleitungen und URL-Regeln werden bei Nginx in der Serverkonfiguration direkt hinterlegt, üblicherweise in der Datei nginx.conf oder in einem vHost-Konfigurationsblock. Wer von Apache auf Nginx wechselt, muss .htaccess-Regeln manuell in die Nginx-Syntax übertragen.