Die WordPress .htaccess: Beispiele und Anleitung
Die .htaccess steuert Permalinks, Weiterleitungen und den Zugriff auf sensible Dateien. Ein falsches Zeichen legt die ganze Website lahm. Diese Anleitung zeigt Speicherort, Aufbau und die Regeln, die sich in der Praxis bewähren.
Was die .htaccess-Datei macht
Die .htaccess ist eine Konfigurationsdatei für den Apache-Webserver. Liegt sie in einem Verzeichnis, gelten ihre Regeln für dieses Verzeichnis und alle darunter. Der Server liest sie bei jeder Anfrage, noch bevor WordPress überhaupt startet.
WordPress braucht sie vor allem für die Permalinks. Erst durch ihre Regeln werden aus technischen Adressen wie index.php?p=123 sprechende Adressen wie /mein-beitrag/. Darüber hinaus lassen sich Weiterleitungen einrichten, einzelne Dateien sperren und Zugriffe auf Verzeichnisebene einschränken.
Ein Hinweis vorweg: Diese Anleitung gilt für Apache, die häufigste Umgebung bei klassischem Webhosting. Läuft Ihre Seite auf Nginx, gibt es keine .htaccess. Vergleichbare Regeln stehen dort in der Serverkonfiguration und müssen vom Hoster gesetzt werden.
Wo die .htaccess liegt
Im Stammverzeichnis Ihrer Installation, also dort, wo auch die wp-config.php und die Ordner wp-admin, wp-content und wp-includes liegen. Je nach Anbieter heißt dieser Ordner public_html, httpdocs oder www.
Weil Dateinamen mit einem Punkt am Anfang unter Unix als versteckt gelten, zeigen viele FTP-Programme sie nicht von selbst an. Aktivieren Sie in Ihrem Programm die Option für versteckte Dateien.
Existiert noch keine .htaccess, legt WordPress sie an, sobald Sie unter Einstellungen > Permalinks einmal speichern. Voraussetzung ist, dass der Server in das Verzeichnis schreiben darf.
public_html/
├─ wp-admin/
├─ wp-content/
├─ wp-includes/
├─ wp-config.php
├─ index.php
└─ .htaccess ← liegt hier
Die Standard-.htaccess von WordPress
Eine frische Installation mit aktivierten Permalinks enthält einen Block, den WordPress selbst verwaltet. Er reicht alle Anfragen, die keiner echten Datei entsprechen, an die index.php weiter:
# 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
Alles zwischen den beiden Kommentarzeilen gehört WordPress. Eigene Regeln setzen Sie davor oder dahinter, niemals dazwischen. Sonst überschreibt WordPress sie, sobald die Permalink-Einstellungen erneut gespeichert werden.
Wie die Permalink-Struktur selbst funktioniert, steht unter WordPress Permalinks einstellen.
Sicher bearbeiten in vier Schritten
1. Sichern
Datei herunterladen oder auf dem Server umbenennen. Ohne Kopie fangen Sie nicht an.
2. Bearbeiten
Nur mit einem reinen Texteditor. Word und Textverarbeitungen fügen unsichtbare Zeichen ein.
3. Hochladen
Per FTP oder über den Dateimanager des Hostings, immer im Textmodus.
4. Testen
Startseite, eine Unterseite und das Backend aufrufen. Bei einem Fehler sofort zurücksichern.
Testen Sie nach jeder einzelnen Änderung, nicht erst am Schluss. Wenn Sie fünf Regeln auf einmal einfügen und die Seite danach einen Serverfehler zeigt, suchen Sie länger als nötig.
Praxisbeispiele für die .htaccess
Weiterleitung einrichten
Eine einzelne Adresse dauerhaft auf eine neue umleiten:
Redirect 301 /alte-seite/ https://ihre-domain.de/neue-seite/
Bei vielen Weiterleitungen wird die Datei schnell unübersichtlich. Ein Redirect-Plugin verwaltet sie komfortabler und erlaubt Muster mit Platzhaltern.
Auf HTTPS umleiten
Wenn Ihre Seite noch über http erreichbar ist, gehört eine Umleitung auf die verschlüsselte Variante eingerichtet:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
</IfModule>
Viele Hoster bieten dafür inzwischen einen Schalter im Kundenmenü an. Wenn es den gibt, nutzen Sie ihn statt der eigenen Regel.
Auf eine Variante mit oder ohne www festlegen
Ihre Seite sollte unter genau einer Adresse erreichbar sein. Diese Regel leitet auf die Variante ohne www:
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ https://%1/$1 [L,R=301]
Zugriffe einschränken
wp-config.php sperren
Die Datei enthält die Datenbankzugangsdaten und hat im Browser nichts verloren:
<Files wp-config.php>
Require all denied
</Files>
Auf älteren Servern mit Apache 2.2 lautet die Syntax stattdessen Order allow,deny gefolgt von Deny from all. Welche Version läuft, sagt Ihnen der Hoster.
Die .htaccess selbst schützen
<Files .htaccess>
Require all denied
</Files>
Verzeichnislisten abschalten
Ohne diese Zeile zeigen manche Server den Inhalt von Ordnern an, in denen keine index-Datei liegt:
Options -Indexes
Einzelne IP-Adressen sperren
Wenn eine bestimmte Adresse dauerhaft stört:
<RequireAll>
Require all granted
Require not ip 123.123.123.123
</RequireAll>
wp-admin auf feste IP-Adressen beschränken
Legen Sie dazu eine eigene .htaccess im Ordner wp-admin an, nicht im Stammverzeichnis:
Require ip 123.123.123.123
Diese Variante ist nur bei fester IP-Adresse praktikabel. Bei wechselnder Adresse sperren Sie sich selbst aus. In dem Fall sind ein starkes Passwort, ein zweiter Faktor und ein Login-Schutz-Plugin die bessere Wahl, siehe den Vergleich der WordPress Sicherheits-Plugins.
Wenn die Seite nicht mehr lädt
Der typische Fall ist ein Internal Server Error, also die Fehlermeldung 500. Schon eine falsch geschriebene Direktive genügt.
- Backup zurückspielen. Der schnellste Weg zurück in den funktionierenden Zustand.
- Kein Backup? Benennen Sie die Datei per FTP in
htaccess-altum. Die Seite läuft dann ohne Regeln, Unterseiten zeigen aber 404. - Permalinks neu speichern. Öffnen Sie Einstellungen, Permalinks und klicken Sie auf Speichern. WordPress schreibt seinen Block neu.
- Fehlerprotokoll lesen. Im Hosting-Panel steht meist die Zeilennummer, an der es hakt.
Fügen Sie eigene Regeln danach einzeln wieder ein und prüfen Sie nach jeder.
Was nicht in die .htaccess gehört
Die Datei kann viel, ist aber selten die beste Stelle dafür.
- Caching-Regeln setzt ein Caching-Plugin zuverlässiger und passend zu seiner eigenen Logik.
- Komprimierung aktivieren viele Hoster bereits serverseitig. Doppelt gesetzt kann es sich gegenseitig aufheben.
- Umfangreiche Weiterleitungslisten gehören in ein Redirect-Plugin, das eine Oberfläche und Protokolle mitbringt.
- Kopierte Regelblöcke aus dem Netz ohne zu verstehen, was sie tun. Genau daraus entstehen die Serverfehler, die schwer zu finden sind.
Ein weiterer Punkt: Jede Regel wird bei jeder Anfrage ausgewertet. Eine aufgeblähte Datei kostet Rechenzeit, wenn auch wenig. Halten Sie sie schlank.
Häufige Fragen zur .htaccess
In der Regel legt WordPress sie selbst an, sobald Sie unter Einstellungen, Permalinks einmal speichern. Fehlt sie trotzdem, erstellen Sie lokal eine leere Textdatei, benennen sie in .htaccess um, fügen den WordPress-Standardblock ein und laden sie ins Stammverzeichnis.
Dateinamen, die mit einem Punkt beginnen, gelten unter Unix als versteckt. Aktivieren Sie in Ihrem FTP-Programm die Option zum Anzeigen versteckter Dateien. Im Dateimanager des Hostings gibt es meist einen entsprechenden Schalter.
Ja. Ein einzelnes falsches Zeichen führt zu einem Serverfehler 500, und zwar für die gesamte Website inklusive Backend. Deshalb gehört vor jede Änderung eine Sicherungskopie. Im Notfall benennen Sie die Datei per FTP um, dann läuft die Seite wieder ohne Regeln.
Außerhalb des Blocks zwischen BEGIN WordPress und END WordPress, am besten davor. Alles innerhalb dieses Blocks überschreibt WordPress, sobald die Permalink-Einstellungen erneut gespeichert werden.
Dann gibt es keine .htaccess. Die entsprechenden Regeln stehen in der Serverkonfiguration und lassen sich meist nicht selbst bearbeiten. Wenden Sie sich an Ihren Hoster und beschreiben Sie, was erreicht werden soll, statt eine Apache-Regel zu übermitteln.
Weiterlesen
Serverfehler nach einer Änderung?
Wir holen Ihre Website zurück, räumen die .htaccess auf und setzen nur die Regeln, die Ihre Installation wirklich braucht.
