.htaccess für WordPress: Die 10 wichtigsten Snippets (mit Generator)
Was die .htaccess in WordPress wirklich macht, welche Regeln du niemals anfassen solltest, und zehn fertige Snippets für HTTPS, Caching, Sicherheits-Header und mehr – zum Abtippen oder per Generator zusammenklicken.
Deine .htaccess ist eine der mächtigsten Dateien deiner WordPress-Installation, auch wenn du sie vermutlich noch nie bewusst geöffnet hast. Sie liegt unscheinbar im Stammverzeichnis, ohne Namen vor dem Punkt, und WordPress trägt dort selbst die Regeln für deine Permalinks ein. Mit ein paar zusätzlichen Zeilen steuerst du aber weit mehr: HTTPS erzwingen, Ladezeiten drücken, Angriffsfläche verkleinern. Genau darum geht es in diesem Beitrag – .htaccess für WordPress, zehn Snippets, mit denen du die Datei sinnvoll erweiterst, ohne bestehende Regeln zu zerschießen. Wer sich das Abtippen sparen will, findet weiter unten einen kostenlosen Generator, der die komplette Datei für dich zusammenbaut.
Was ist die .htaccess-Datei überhaupt?
Die .htaccess (kurz für „hypertext access") ist eine verzeichnisbezogene Konfigurationsdatei für den Webserver Apache und dessen weit verbreiteten, kompatiblen Ableger LiteSpeed – letzterer läuft etwa bei vielen Hostern wie Hostinger im Hintergrund. Legst du sie in ein Verzeichnis, gelten ihre Regeln für genau diesen Ordner und alle Unterordner, ganz ohne dass du Zugriff auf die zentrale Server-Konfiguration brauchst. Genau deshalb ist sie auf Shared Hosting so beliebt: Sie ist der einzige Hebel, den dir dein Provider an die Hand gibt.
Wichtig zu wissen: Läuft deine Seite auf Nginx, liest der Server gar keine .htaccess-Dateien. Nginx bringt sein eigenes, deutlich schnelleres Konfigurationsmodell mit, das aber zentral in der Server-Konfiguration lebt und sich nicht per Datei im Webroot pflegen lässt. Die Snippets in diesem Beitrag funktionieren also nur auf Apache- oder LiteSpeed-Hosting. Im Zweifel hilft ein Blick in dein Hosting-Panel oder eine kurze Nachfrage beim Support.
Die WordPress-Standard-Regeln – nicht anfassen
Sobald du in WordPress unter „Einstellungen → Permalinks" einmal speicherst, schreibt WordPress selbst einen Block in deine .htaccess. Er sieht bei einer Standard-Installation so aus:
# BEGIN WordPress
# Die Direktiven (Zeilen) zwischen "BEGIN WordPress" und "END WordPress" sind
# dynamisch generiert und sollten nur über WordPress-Filter geändert werden.
# Alle Änderungen an den Direktiven zwischen diesen Markierungen werden überschrieben.
<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
Diese Regeln sorgen dafür, dass jede Anfrage, die nicht auf eine echte Datei oder einen echten Ordner zeigt, an index.php weitergereicht wird – die Grundlage für sprechende Permalinks wie /blog/mein-beitrag/ statt /?p=123. Der Block wird von WordPress verwaltet und bei jedem Speichern der Permalink-Einstellungen neu geschrieben. Änderst du hier von Hand etwas, ist es beim nächsten Speichern wieder weg. Eigene Snippets gehören deshalb oberhalb von # BEGIN WordPress. Dort laufen sie garantiert zuerst und überleben jede Permalink-Änderung unbeschadet.
Klick dir deine .htaccess zusammen: kostenloser Generator
Häkchen setzen statt Zeilen abtippen: Der .htaccess-Generator baut dir HTTPS-Erzwingung, Redirects, Caching, GZIP und Sicherheits-Header fertig kommentiert zusammen, zum Kopieren oder Download. Läuft komplett im Browser, es wird nichts hochgeladen.
Die 10 wichtigsten .htaccess-Snippets für WordPress
Alle folgenden Snippets trägst du oberhalb des # BEGIN WordPress-Blocks ein. Kopiere sie einzeln oder kombiniere mehrere, je nachdem, was deine Seite gerade braucht.
1. HTTPS erzwingen
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
</IfModule>
Jeder Aufruf über http:// landet dauerhaft (301) bei https://. Voraussetzung ist natürlich ein aktives SSL-Zertifikat. Prüfe vorher, ob dein Hoster HTTPS nicht ohnehin schon serverseitig erzwingt – dann würde dieses Snippet nur einen überflüssigen zweiten Redirect-Hop erzeugen.
2. WWW oder non-WWW vereinheitlichen
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\. [NC]
RewriteCond %{HTTP_HOST} ^(?:www\.)?(.+)$ [NC]
RewriteRule ^ %{REQUEST_SCHEME}://%1%{REQUEST_URI} [L,R=301]
</IfModule>
Für Google sind www.deine-domain.de und deine-domain.de zwei verschiedene Adressen. Ohne eindeutige Regel splitten sich Backlinks und Ranking-Signale auf beide Varianten auf. Dieses Snippet leitet www auf die Version ohne www um; willst du es umgekehrt, tauschst du die Bedingung entsprechend.
3. 301-Weiterleitungen fest einbauen
<IfModule mod_alias.c>
Redirect 301 /alter-pfad https://deine-domain.de/neuer-pfad
</IfModule>
Für einzelne, dauerhafte Umzüge reicht eine Zeile pro Regel. Bei mehr als ein paar Redirects wird die Datei aber schnell unübersichtlich, und ein falscher Statuscode kostet dich Ranking-Wert. Die Unterschiede zwischen 301, 302, 307 und 410 sowie den komfortableren Plugin-Weg erklärt der Beitrag 301-Weiterleitungen in WordPress einrichten im Detail.
4. Browser-Caching aktivieren
<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType text/html "access plus 0 seconds"
ExpiresByType text/css "access plus 1 week"
ExpiresByType application/javascript "access plus 1 week"
ExpiresByType image/webp "access plus 1 month"
ExpiresByType image/png "access plus 1 month"
ExpiresByType font/woff2 "access plus 1 year"
</IfModule>
Statische Dateien wie CSS, Bilder oder Schriften ändern sich selten – der Browser darf sie also eine Weile behalten, statt sie bei jedem Aufruf neu zu laden. HTML lässt du bewusst außen vor (0 Sekunden), weil sich Inhalte dort laufend ändern. Caching ist nur ein Baustein von vielen: Die restlichen neun Stellschrauben für eine spürbar schnellere Seite liest du im Beitrag WordPress langsam? So machst du deine Seite in 10 Schritten wieder schnell.
5. GZIP-Komprimierung aktivieren
<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/html text/plain text/css text/xml
AddOutputFilterByType DEFLATE application/javascript application/x-javascript
AddOutputFilterByType DEFLATE application/json application/xml
AddOutputFilterByType DEFLATE image/svg+xml
</IfModule>
Textbasierte Dateien lassen sich oft um 60 bis 80 Prozent komprimieren, bevor sie zum Browser geschickt werden. Der Effekt ist besonders bei größeren CSS- und JS-Dateien spürbar und kostet den Server kaum Rechenzeit.
6. Sicherheits-Header setzen
<IfModule mod_headers.c>
Header always set X-Content-Type-Options "nosniff"
Header always set X-Frame-Options "SAMEORIGIN"
Header always set Referrer-Policy "strict-origin-when-cross-origin"
Header always set Permissions-Policy "geolocation=(), microphone=(), camera=()"
</IfModule>
Diese vier Header verhindern, dass der Browser Dateitypen errät (nosniff), blockieren das Einbetten deiner Seite in fremde iframes (Clickjacking-Schutz), begrenzen die Weitergabe der Referrer-URL und schalten Kamera- sowie Mikrofonzugriff standardmäßig ab. Einen HSTS-Header lässt du dagegen erst dann aktiv, wenn HTTPS zuverlässig auf der gesamten Seite läuft – Browser merken sich die Regel über Monate, ein Fehler ist kaum kurzfristig rückgängig zu machen.
7. Eigene 404-Seite einbinden
ErrorDocument 404 /404.html
Statt der nackten Server-Standardseite zeigst du eine eigene 404-Seite mit Navigation und Suchfeld – das hält Besucher auf der Seite, statt sie direkt abspringen zu lassen. Wie du tote URLs überhaupt findest und sauber auf passende Ziele weiterleitest, statt sie einfach nur mit einer hübschen Fehlerseite zu kaschieren, steht im Beitrag WordPress 404-Fehler weiterleiten.
8. Hotlink-Schutz für Bilder
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^https?://(www\.)?deine-domain\.de [NC]
RewriteRule \.(jpe?g|png|gif|webp|svg)$ - [F,NC,L]
</IfModule>
Bindet eine fremde Seite deine Bilder direkt per <img>-Tag ein, zahlst du für deren Traffic mit – ohne dass jemand deine Seite besucht. Diese Regel lässt Bildaufrufe nur zu, wenn sie von deiner eigenen Domain oder ganz ohne Referrer (etwa aus Lesezeichen) kommen. Ersetze deine-domain.de durch deine echte Domain.
9. Verzeichnislisting deaktivieren
Options -Indexes
Ohne diese Zeile listet Apache den kompletten Inhalt eines Ordners im Browser auf, sobald darin keine index.html oder index.php liegt – etwa in einem vergessenen /uploads/2023/-Unterordner. Eine einzelne Zeile schließt diese unnötige Angriffsfläche.
10. Dotfiles sperren
<IfModule mod_rewrite.c>
RewriteCond %{REQUEST_URI} "!(^|/)\.well-known/" [NC]
RewriteRule "(^|/)\." - [F]
</IfModule>
Versteckte Dateien wie .env, .git oder eine vergessene .htpasswd haben im Browser nichts verloren, landen aber überraschend oft versehentlich im Webroot. Diese Regel blockiert den Zugriff auf alles, was mit einem Punkt beginnt – mit einer bewussten Ausnahme für .well-known, das etwa für die SSL-Validierung gebraucht wird.
Klick dir deine .htaccess zusammen: kostenloser Generator
Zehn Snippets von Hand kombinieren und dabei kein Semikolon vergessen? Der .htaccess-Generator setzt HTTPS, Caching, GZIP, Sicherheits-Header, Hotlink-Schutz und mehr per Klick zusammen – fertig kommentiert, direkt zum Kopieren oder Herunterladen.
Fazit
Eine gut gepflegte .htaccess für WordPress ist kein Hexenwerk, verlangt aber Respekt: Sichere immer zuerst ein Backup, rühr die WordPress-eigenen Regeln zwischen den BEGIN- und END-Markierungen nicht an, und teste nach jeder Änderung, ob die Seite noch lädt. Für die zehn Snippets in diesem Beitrag brauchst du keine Programmierkenntnisse, nur Sorgfalt beim Einfügen. Wer sich das manuelle Zusammenbauen sparen will, nutzt einfach den Generator weiter oben.
Redirects lieber bequem im WordPress-Backend pflegen?
Sobald aus einer Handvoll Weiterleitungen ein paar Dutzend werden, wird die .htaccess schnell unübersichtlich. Linkjet verwaltet 301 & Co. direkt in WordPress, mit Klick-Statistik, 404-Monitor und Import aus Pretty Links & Redirection. 100 % kostenlos, keine externen Calls.
Häufige Fragen
Was ist eine .htaccess-Datei in WordPress?
Die .htaccess ist eine versteckte, verzeichnisbezogene Konfigurationsdatei für den Webserver Apache und dessen kompatiblen Ableger LiteSpeed. WordPress schreibt dort automatisch einen Regelblock für deine Permalinks hinein, sobald du die Permalink-Einstellungen einmal speicherst. Über zusätzliche Zeilen lässt sich damit weit mehr steuern, etwa HTTPS erzwingen, Browser-Caching aktivieren oder Sicherheits-Header setzen. Auf Servern mit Nginx greift die Datei allerdings nicht, dort braucht es eine andere, zentrale Server-Konfiguration.
Wo finde ich die .htaccess-Datei bei WordPress und wie bearbeite ich sie sicher?
Die Datei liegt im Stammverzeichnis deiner WordPress-Installation, dort, wo auch der Ordner wp-admin sichtbar ist. Weil ihr Name mit einem Punkt beginnt, blenden viele FTP-Programme und Datei-Manager sie standardmäßig aus, meist gibt es dafür eine Option wie „versteckte Dateien anzeigen". Sicher bearbeitest du sie, indem du zuerst eine Kopie der bestehenden Datei sicherst, deine Snippets oberhalb des Blocks mit BEGIN WordPress einfügst und nach dem Speichern sofort prüfst, ob die Seite noch lädt. So kannst du im Fehlerfall jederzeit die alte Version zurückspielen.
Warum funktioniert die .htaccess auf manchen Hosting-Servern nicht?
Die .htaccess wird nur von Apache und kompatiblen Servern wie LiteSpeed ausgewertet. Läuft deine Seite auf Nginx, ignoriert der Server die Datei vollständig, weil Nginx ein eigenes, zentral verwaltetes Konfigurationsmodell nutzt. Auch bei Apache-Hosting kann es vorkommen, dass einzelne Module wie mod_rewrite oder mod_headers deaktiviert sind, dann greifen die betroffenen Regeln trotz IfModule-Absicherung schlicht nicht. Im Zweifel hilft ein Blick ins Hosting-Panel oder eine kurze Nachfrage beim Support, welcher Servertyp läuft und welche Module aktiv sind.
Was passiert, wenn ich einen Fehler in der .htaccess mache?
Ein Syntaxfehler, etwa eine fehlende schließende Klammer oder ein falsch gesetztes Anführungszeichen, kann dazu führen, dass Apache die komplette Datei nicht mehr verarbeitet und die gesamte Seite mit einem Fehler 500 ausfällt, nicht nur der betroffene Bereich. Deshalb ist ein Backup vor jeder Änderung unverzichtbar. Passiert der Fehler trotzdem, lädst du die zuvor gesicherte, funktionierende Version per FTP zurück in das Stammverzeichnis, und die Seite ist sofort wieder erreichbar.
Wie erstelle ich eine .htaccess für WordPress, ohne Code selbst zu schreiben?
Der kostenlose .htaccess-Generator von hafenstudios übernimmt das Zusammensetzen für dich: Du setzt Häkchen bei den Modulen, die du brauchst, etwa HTTPS-Erzwingung, WWW-Weiterleitung, 301-Redirects, Caching, GZIP, Sicherheits-Header oder Hotlink-Schutz, und rechts entsteht live eine fertig kommentierte Datei zum Kopieren oder Herunterladen. Das Tool läuft komplett im Browser, es wird nichts an einen Server übertragen. Trotzdem gilt auch hier: Vor dem Ersetzen der bestehenden .htaccess erst ein Backup sichern.