.htaccess-Datei erklärt: was sie ist, wo sie liegt und die wichtigsten Regeln

Die .htaccess steuert pro Ordner, wie der Webserver Anfragen behandelt: Weiterleitungen, HTTPS, Passwortschutz, Caching. Wo du sie findest, wie du sie per FTP bearbeitest und welche Regeln du wirklich brauchst.

Kurzfassung

Die .htaccess ist eine Textdatei für Apache- und LiteSpeed-Webserver. Sie liegt meist im Hauptordner deiner Website und legt fest, was bei Anfragen passiert: Weiterleitungen, HTTPS-Zwang, Passwortschutz, Zugriffsverbote, Cache-Zeiten. Weil der Name mit einem Punkt beginnt, ist sie versteckt; in FileZilla machst du sie mit Server → Auflistung versteckter Dateien erzwingen sichtbar. Fertige Regeln baut der .htaccess-Generator.

Was die .htaccess macht

Normalerweise steht die Konfiguration eines Webservers in zentralen Dateien, auf die du bei Webhosting keinen Zugriff hast. Die .htaccess ist der Ausweg: Apache liest sie bei jeder Anfrage im jeweiligen Ordner und wendet ihre Regeln auf diesen Ordner und alle Unterordner an. Typische Aufgaben:

  • Weiterleitungen alter URLs auf neue (301), Umzug auf eine neue Domain: .htaccess-Weiterleitung
  • HTTPS erzwingen und www/ohne www vereinheitlichen
  • Passwortschutz für einen Ordner zusammen mit einer .htpasswd-Datei: .htpasswd-Generator
  • Zugriff sperren auf Ordner, Dateitypen oder IP-Adressen
  • „Schöne“ URLs, etwa bei WordPress (/kontakt/ statt /?page_id=7)
  • Caching und Komprimierung für schnellere Ladezeiten
  • Eigene Fehlerseiten für 404 und 500

Wo liegt die .htaccess?

Im Document Root deiner Domain, also dem Ordner, in dem auch index.php oder index.html liegt. Je nach Hoster heißt er /html/, /htdocs/, /public_html/, /httpdocs/ oder trägt den Domainnamen. Weitere .htaccess-Dateien in Unterordnern gelten nur dort und ergänzen die übergeordnete.

FileZilla: Server → Auflistung versteckter Dateien erzwingen
FileZilla: Server → Auflistung versteckter Dateien erzwingen
  1. In FileZilla mit dem Server verbinden (so geht’s per SFTP).
  2. Im Menü Server den Haken bei Auflistung versteckter Dateien erzwingen setzen. Ausführlich: Versteckte Dateien in FileZilla anzeigen.
  3. In den Document Root wechseln. Die .htaccess erscheint jetzt in der Liste.
  4. Rechtsklick → Ansehen/Bearbeiten öffnet sie im Editor. Nach dem Speichern fragt FileZilla, ob die geänderte Datei hochgeladen werden soll.

Siehst du trotzdem keine .htaccess, gibt es schlicht noch keine. Du kannst sie anlegen: Rechtsklick → Neue Datei erstellen, Name .htaccess.

Funktioniert die .htaccess bei meinem Hoster?

Webserver .htaccess Typisch bei
Apache ja, wenn AllowOverride erlaubt ist Strato, IONOS, All-Inkl, 1blu, Host Europe, viele Shared-Hoster
LiteSpeed ja, Apache-kompatibel Hostinger, viele cPanel-Hoster
nginx nein, wird ignoriert viele Managed-WordPress-Hoster, eigene VPS

Bei nginx-Hostern stellst du Weiterleitungen im Kundenbereich ein oder bittest den Support darum. Ob dein Server Apache, LiteSpeed oder nginx ist, zeigt oft die Hilfe des Hosters oder der HTTP-Header Server in den Entwicklertools deines Browsers (Netzwerk-Tab).

Die wichtigsten Regeln zum Kopieren

HTTPS erzwingen

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

www entfernen

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

Ordnerinhalt nicht auflisten

Options -Indexes

Bestimmte Dateien sperren (Apache 2.4)

<FilesMatch "\.(env|ini|log|sql|bak)$">
  Require all denied
</FilesMatch>

Eigene 404-Seite

ErrorDocument 404 /404.html

Alles davon und mehr (Caching, Komprimierung, Hotlink-Schutz) setzt der .htaccess-Generator per Klick zusammen.

Die Standard-.htaccess von WordPress

WordPress schreibt beim Speichern der Permalinks diesen Block. Wenn nach einem Plugin-Fehler alle Unterseiten 404 liefern, hilft es oft, die Datei auf genau diesen Inhalt zurückzusetzen:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

Eigene Regeln gehören oberhalb von # BEGIN WordPress. Was zwischen BEGIN und END steht, überschreibt WordPress beim nächsten Speichern der Permalinks. Cache- und Sicherheits-Plugins fügen eigene, ebenso markierte Blöcke hinzu.

Wenn nach einer Änderung nichts mehr geht

  • 500 Internal Server Error heißt fast immer: Tippfehler oder ein Befehl, den der Server nicht kennt. Lade die vorherige Version wieder hoch, deshalb vor jeder Änderung eine Kopie anlegen (z. B. .htaccess.bak).
  • Weiterleitungsschleife („zu oft umgeleitet“): Zwei Regeln leiten sich gegenseitig weiter, häufig HTTPS-Regel plus gleiche Einstellung beim Hoster oder in WordPress. Eine davon entfernen.
  • Änderung wirkt nicht: Browser-Cache leeren oder im privaten Fenster testen; 301-Weiterleitungen merkt sich der Browser dauerhaft. Bei LiteSpeed-Hostern zusätzlich den Server-Cache leeren.
  • Datei wird nicht gespeichert: FileZilla meldet 550 Permission denied. Die Rechte der .htaccess sollten 644 sein: chmod-Rechner.

Häufige Fragen

Frage antippen, um die Antwort zu öffnen.

Warum beginnt der Dateiname mit einem Punkt?

Auf Unix-Systemen gelten Dateien mit Punkt am Anfang als versteckt. So taucht die Konfiguration nicht in Verzeichnislisten auf. Windows tut sich mit solchen Namen schwer; bearbeite die Datei deshalb am besten direkt über FileZilla.

Ist die .htaccess öffentlich lesbar?

Nein. Apache liefert Dateien, die mit .ht beginnen, standardmäßig nicht aus. Ein Aufruf von /.htaccess im Browser endet mit 403.

Macht die .htaccess meine Seite langsamer?

Minimal, weil Apache sie bei jeder Anfrage liest. Bei normalen Websites ist das nicht messbar. Wer einen eigenen Server hat, kann die Regeln in die Serverkonfiguration verschieben und AllowOverride None setzen.

Brauche ich eine .htaccess für eine statische HTML-Seite?

Nicht zwingend. Sinnvoll ist sie trotzdem für HTTPS-Zwang, eine einheitliche Domain (mit oder ohne www) und eine eigene 404-Seite.