Der ultimative Guide: WordPress htaccess

Sebastian

Updated on:

WordPress htaccess

Die WordPress htaccess bietet gigantische Möglichkeiten, um Zugriffsrechte und Sicherheitsstandards deiner Website anzupassen und deren Performance erheblich zu verbessern.

Da innerhalb der .htaccess Datei jedoch mit sehr viel Code gearbeitet wird, schrecken vor allem unerfahrene Anwender häufig davor zurück, Optimierungen vorzunehmen.

Trotz viel Code ist das Arbeiten jedoch nicht so schwer, die du vielleicht denken magst.

Mit diesem Beitrag nehme ich dir die Angst vor der .htaccess!

Ich zeige dir Schritt für Schritt, wie du wichtige Änderungen vornimmst und stelle dir alle Codeschnipsel die hierfür notwendig sind zur Verfügung.

Das Einzige, das du zu tun hast: Copy-and-paste.

Klingt gut?

Dann lass uns gleich starten!

Affiliate Links sind mit einem Stern markiert *. Wir erhalten eine kleine Provision, für dich ändert sich nichts.

1. Was ist die WordPress htaccess?

Bevor wir mit der praktischen Umsetzung starten, möchte ich zunächst eine wichtige Frage klären…

Was ist die WordPress htaccess überhaupt?

Zunächst einmal: Es gibt nicht „die eine“ .htaccess, obwohl dies immer wieder so transportiert wird. Eine WordPress Installation kann viele verschiedene .htaccess Dateien besitzen. Theoretisch in jedem einzelnen Ordner eine.

Dazu aber später mehr.

Zurück zur eigentlichen Frage: Was ist eine .htaccess Datei?

Bei einer .htaccess handelt es sich um eine Konfigurationsdatei, welche die Arbeitsweise eines Apache-Webservers regelt. Einfach gesagt gibt sie diesem direkte Anweisungen. 

Innerhalb einer WordPress Standard-Installation hat die .htaccess eine zentrale Aufgabe: Sie kontrolliert die Darstellung der Permalinks. 

Permalinks sind jedoch längst nicht das einzige Aufgabenfeld einer .htaccess Datei.

Dazu zählen auch:

  1. Steuerung von Umleitungen: Eine .htaccess steuert zum Beispiel 301 Weiterleitungen oder die Umleitung von HTTP zu HTTPS.
  2. Sicherheitsstandards: Mithilfe einer optimierten .htaccess legst du strengere Sicherheitsstandards fest und schützt deine Installation maßgeblich vor Hackern. Du könntest sogar ganze Ordner auf deinem Webspace mit einem Passwort versehen (dazu später mehr).
  3. Leistung: Durch verschiedene Code-Schnipsel lässt sich die Leistung deiner Website erheblich verbessern.

Du siehst, dass eine WordPress htaccess erheblich Einfluss auf deine Website nehmen kann.

Grund genug also, sich näher mit der Datei zu beschäftigen, oder nicht?

1.1 Klassischer Aufbau der Datei

Das Erscheinungsbild einer .htaccess Datei sorgt beim ersten Anblick für wenig Nervenkitzel.

Öffnest du zum Beispiel die .htaccess im Hauptverzeichnis (mithilfe eines einfachen Texteditors), erwarten dich einige Zeilen Code, den du wahrscheinlich (noch) nicht entschlüsseln kannst.

Der klassische Aufbau der WordPress htaccess ist sehr simpel und umfasst nur wenige Zeilen Code.

Zu Beginn ist diese Datei relativ klein und übersichtlich.

Am Ende dieses Beitrags wirst du die Datei nicht wiedererkennen.

Versprochen 😉

Übrigens: Es existieren zahlreiche Plugins, die Einträge innerhalb der .htaccess im Stammverzeichnis vornehmen. Es kann also durchaus sein, dass deine Datei bereits sehr aufgebläht ist.

Welcher Code zu welchem Plugin gehört erkennst du relativ leicht: zu Beginn eines jeden Code-Abschnitts wird eine Art Beschreibung eingefügt.

Hier zu sehen am Beispiel des W3 Total Cache Plugins.

Innerhalb der .htaccess Datei findest du für jeden Abschnitt eine Beschreibung.

1.2 Wo ist die .htaccess Datei zu finden?

Hast du bislang keine .htaccess Dateien angelegt, wirst du zunächst nur ein Exemplar dieses Dateityps finden.

Dieses liegt im Hauptverzeichnis deiner WordPress Installation und ist zugleich die wichtigste .htaccess überhaupt, da wir mit ihr am meisten Prozesse steuern können. Die WordPress htaccess im Hauptverzeichnis hat nämlich einen Einfluss auf ALLE Unterverzeichnisse.

Zu finden ist diese „primäre .htaccess Datei“ relativ simpel mithilfe eines FTP-Programms, beispielsweise FileZilla, unter dem Pfad WordPress > .htaccess.

Die primäre .htaccess Datei findest du im Root-Verzsichnis

Wie du nun eine WordPress htaccess bearbeitest und erstellst, verrate ich dir im nächsten Kapitel.

2. htaccess bearbeiten

Es existieren verschiedene Möglichkeiten, mit .htaccess Dateien zu arbeiten.

Während eine Datei bereits im Rahmen der Standard-Installation erstellt wurde, kann es sinnvoll sein, weitere .htaccess-Dateien zu erstellen, um auch die Arbeitsweise der Unterverzeichnisse individuell zu beeinflussen.

Dazu aber später mehr.

Zunächst möchte ich dir zeigen, wie du auf die bereits vorhandene .htaccess zugreifst und dich in die Lage versetzt, Änderungen an der Datei vorzunehmen.

⚠️  Achtung: Arbeiten innerhalb einer .htaccess Datei bringen erhebliche Änderungen für das System mit sich. Ein vorheriges Backup ist also ein Muss! Ich empfehle dir außerdem, eine Kopie der unveränderten .htaccess Datei abzulegen, um durchgeführte Änderungen bei Probleme jederzeit zurücksetzen zu können.

2.1 Auf bestehende Datei zugreifen

Mit einem FTP-Programm wie dem bereits erwähnten FileZila ist die Bearbeitung der .htaccess Datei relativ simpel.

Wähle die .htaccess aus, die du herunterladen möchtest und speichere sie auf deinem Computer ab.

Mithilfe eines FTP-Programms lässt sich die .htaccess herunterladen.

Im Anschluss öffnest du die Datei mit einem einfachen Texteditor, um die gewünschten Codes einzufügen, die ich dir später verraten werden.

Für alle Mac-Nutzer ein kleiner Hinweis: Die lokal gespeicherte .htaccess wird vom System zunächst unsichtbar gemacht, lässt sich jedoch mit der Tastenkombination Befehlstaste (⌘) Umschalttaste (⇧) und Punkt (.) sichtbar machen.

Übrigens…

Wer nicht den Weg über ein FT-Programm gehen möchte, der kann auch das Plugin Htaccess Editor verwenden. Hier ist sogar eine Testfunktion enthalten, die alle Veränderungen vor Veröffentlichung prüft.

Mit dem Plugin Htaccess Editor kannst du die WordPress htaccess direkt im Backend bearbeiten.

2.2 Neue .htaccess Datei erstellen

Wie bereits eingangs erwähnt kann es sinnvoll sein, mehrere .htaccess Dateien innerhalb einer WordPress Installation zu verwenden.

Während die .htaccess im Standardverzeichnis das gesamte System steuert, ergibt es bei manchen Unterverzeichnissen Sinn, ergänzende Befehle hinzuzufügen, die auch nur speziell für dieses Unterverzeichnis gelten.

Du wirst also unter Umständen in die Situation kommen, eine neue .htaccess Datei zu erstellen zu müssen.

Dies wird relativ simpel, ebenfalls mit einem Texteditor umgesetzt. Öffne hier eine neue Datei, füge die gewünschten Code-Schnipsel ein und speichere die Datei ab. Logischerweise ebenfalls unter der Bezeichnung „.htaccess“, damit WordPress die Datei später korrekt zuordnet.

Einziges Problem: Dein Betriebssystem (egal, ob Windows oder Mac OSX) wird es dir nicht erlauben, Dokumente mit dem Dateinamen .htaccess zu erstellen.

Die Erstellung von Dateien ohne Dateinamen sind bei Mac OS X nicht erlaubt.

Die Lösung ist jedoch denkbar einfach…

Benennen die Datei zunächst „a.htaccess“, lade diese im Anschluss auf deinen Server direkt in das gewünschte Unterverzeichnis (Achtung: Nicht die .htaccess im Hauptverzeichnis ersetzen) und benennen sie im Anschluss hier um.

3. Die besten Code-Erweiterungen

Du bist nun perfekt darauf vorbereitet, deine WordPress htaccess zu bearbeiten und nach deinen Wünschen anzupassen.

Aus diesem Grund möchte ich dir jetzt die besten Codes zur Verfügung stellen, die es meiner Meinung nach für die Optimierung der .htaccess-Dateien in WordPress gibt.

⚠️  Achtung: Bitte füge keinen Code zwischen den Zeilen # BEGIN WordPress und # END WordPress ein.

3.1 Stammverzeichnis

3.1.1 Serverinformationen verstecken

Manche Hoster zeigen auf jeder WordPress Seite die Server-Informationen an. Muss nicht sein, da dies keinen wirklichen Mehrwert bietet, sondern lediglich Hacker erfreuen wird.

# Server-Informationen verstecken 

ServerSignature Off

3.1.2 WordPress htaccess schützen

Zwischenzeitlich müsstest du erkannt haben, wie wichtig eine .htaccess Datei ist und welchen Einfluss sie auf deine Website haben kann. Folglich solltest du die .htaccess vor einem Fremdzugriff bestmöglich schützen.

# Schütze die .htacess Datei

<Files ~ ~ „^.*.([Hh]][Tt]][AaPaP])“>

order allow,deny

deny from all

satisfaction all

</Files>

3.1.3 Schütze deine wp-config.php

Die wp-config.php sorgt für die Verbindung zwischen deiner Website und den benutzen Datenbanken. Sie ist somit eine der wichtigsten Dateien der gesamten WordPress Installation.

Dieser Tatsache sind sich selbstverständlich auch Hacker bewusst und nutzen die wp-config.php gerne als Angriffspunkt.

Dieser kleine Code schützt deine Datei:

# Schütze die wp-config.php

<files wp-config.php>

order allow,deny

deny from all

</files>

3.1.4 Schütze Benutzernamen

Ebenfalls sehr beliebt bei Hackern ist das Auslesen von Benutzernamen, um sich einfachen Zugang zum Backend zu verschaffen.

Eigentlich logisch. Schließlich muss nur noch das Passwort erraten werden, wenn man bereits im Besitz eines Nutzernamens ist.

Was die Wenigsten wissen: Es ist wirklich einfach, die Benutzernamen einer WordPress Installation zu erfahren. Hierfür genügt es, an die Adresse im Browser das Kürzel „/?author=x“ anzuhängen, wobei „x“ durch eine Zahl ersetzt werden muss. So wird „author=1“ in der Regel der Administrator, also der erste angelegte Benutzer sein.

Wer das verhindern möchte, sollte unbedingt nachfolgenden Code in seine .htaccess Datei einfügen:

# Auslesen von Autoren-Namen verhindern

<IfModule mod_rewrite.c>

RewriteCond %{QUERY_STRING} ^author=([0-9]*)

RewriteRule .* – [F

</IfModule>

3.1.5 Schütze deinen Blog vor SPAM-Kommentaren

Ein .htaccess Code, der von den wenigsten Seitenbetreibern eingesetzt wird, ist der Schutz vor SPAM.

Zwar kann dieser Code nicht allein vor SPAM-Kommentaren bewahren, in Verbindung mit einem passenden Plugin ist er jedoch eine wirklich tolle Lösung, um unerwünschten Schrott fernzuhalten.

Achtung: „deinewebsite.de“ muss im Code individuell von dir angepasst werden.

# Verhindere SPAM-Kommentare

<IfModule mod_rewrite.c>

RewriteCond %{REQUEST_METHOD} POST

rewriteCond %{REQUEST_URI} .wp-comments-post.php*

RewriteCond %{HTTP_REFERER} !.deinewebsite.de.* [OR]

RewriteCond %{HTTP_USER_AGENT} ^$

RewriteRule (.*) ^http::///%{REMOTE_ADDR}/$ [R=3D301,L]

</IfModule>

3.1.6 Image Hotlinking verhindern

Image Hotlinking?

Davon bist unter Umständen auch du betroffen!

Man spricht von Image Hotlinking, wenn eine andere Person Bilder deines Blogs auf ihrer Seite einbindet, jedoch die URL deines Servers angibt. Jedes Mal, wenn die fremde Seite geladen wird, erfolgt also auch ein Zugriff auf deinen Server.

Das Problem: Sollten dies viele externe Seiten tun, wird die Geschwindigkeit deiner Website unter Umständen erheblich beeinträchtigt.

Ersetze „deineseite.de“ und „deinebildadresse.de“. Mit letzterem gibst du das Bild an, mit dem du das von der externen Seite gewünschten Bildes ersetzt.

# Verhindere Image Hotlinking

RewriteEngine On

RewriteCond %{HTTP_REFERER} !^$

RewriteCond %{HTTP_REFERER} !^http(s)?:://(www.)?deineseite.de [NC]

RewriteRule .(jpg|jpeg|png|png|gif)$ http://deinebildadresse.de [NC,R,L]

3.1.7 IP-Adressen ausschließen

Solltest du mithilfe eines Security Plugins festgestellt haben, dass eine IP-Adresse mehrfach versucht hat, sich Zugang zum Backend deiner Website zu verschaffen, kann es durchaus sinnvoll sein, dieser den Zugang durch .htaccess komplett zu untersagen.

Der Schutz ist zwar nicht 100 % sicher, da Hacker schnell Notiz davon nehmen und ihre IP-Adresse ändern werden. Eine zusätzliche Erschwernis bietet dieser Code dennoch.

# IP-Adresse Zutritt verweigern

<Limit GET POST>

order allow,deny

deny from durch IP-Adresse ersetzen

allow from all

</Limit>

3.1.8 Besucher auf eine andere Seite umleiten

Wer sich mehrere Domains gesichert hat (z.B. deinedomain.de und deine-domain.de) kann diese auf eine Hauptdomain weiterleiten.

Diese geschieht mit folgenden .htaccess Code

# Besucher auf andere Adresse umleiten

RewriteEngine on

RewriteCond %{HTTP_REFER} deineseite\.de/

RewriteRule ^(.*)$ http://www.deinegewünschteseite.de [R=301,L]

3.1.9 Mit .htaccess 301-Weiterleitungen einrichten

Wer eine 301-Weiterleitungen einrichten möchte, findet deutlich bessere Lösungen, als dies mit .htaccess zu tun.

Ich selbst nutze das SEO-Plugin Rank Math, das diese Funktion bereits integriert hat. Sicherlich der deutlich effektivere Weg, insbesondere dann, wenn du mehrere 301 Umleitungen einrichten musst.

Dennoch möchte ich dir hier den Code zeigen:

# 301 Weiterleitung

Redirect 301 /titelderaltenseite/

http://www.deineseite.de/neueseite

3.1.10 HTTP zu HTTPS umleiten mit .htaccess

Um sicherzustellen, dass alle Besucher auf die HTTPS-Version deiner Website umgeleitet werden, kannst du hierfür eine Umleitung einrichten.

Dieser Code-Schnipsel ist ein Muss!

# Auf HTTPS umleiten 

RewriteCond %{SERVER_PORT} ^80$

RewriteRule ^(.*)$ https:///%{SERVER_NAME}%{REQUEST_URI} [L,R]

3.1.11 Caching mittels WordPress htaccess aktivieren?

Ja, es existiert ein .htaccess Code, um Caching zu aktivieren.

Allerdings würde ich dir unbedingt von dieser Lösung abraten.

Es gibt zahlreiche Plugins, die das Caching ermöglichen und es dir außerdem relativ einfach machen, den Cache im Bedarfsfall auch zu leeren. Zusätzlich sind diese Plugins mit vielen weiteren sehr nützlichen Funktionen ausgestattet, um die Performance deiner Website zu verbessern.

Caching-Plugins sind also um ein so Vielfaches besser, sodass ich den Code für Caching als völlig überflüssig empfinde. Wer einmal einen Blick auf WPRocket* geworfen hat (das Plugin, das ich dir wärmstens empfehlen kann) wird wissen, warum.

WP Rocket bietet zahlreiche Caching-Einstellungen

3.2 wp-admin

Kommen wir nun zur ersten .htaccess Datei, die individuell für ein Unterverzeichnis angelegt wird.

Genauer geht es hier um die wp-admin, also die Türe zum Backend deiner Website.

Diese Türe sollte so gut wie möglich gesichert werden, denn wer sich einmal unerlaubt Zugang verschafft, der kann hier großen Schaden anrichten!

Erstelle eine neue .htaccess Datei und füge diese mithilfe von FileZila direkt im wp-admin-Ordner ein.

3.2.1 Zugang zu wp-admin mit .htaccess limitieren

Mithilfe dieses Codes erlaubst du nur ausgewählten Nutzern den Zugang zu deiner wp-admin. Genauer legst du die IPs fest, welche sich im Backend einloggen dürfen.

# Zugang zu wp-admin

<Limit GET POST PUT>

order deny,allow

deny from all

# Meine IP

allow from xxx.xxx.xxx.xxx.xxx

# IP Mitarbeiter 1

allow from xxx.xxx.xxx.xxx

# IP Mitarbeiter 2

allow from xxx.xxx.xxx.xxx

</Limit>

Tipp: Wenn du nicht weißt, wie deine eigene IP-Adresse lautet, kannst du zum Beispiel https://www.wieistmeineip.de/ nutzen.

3.3 wp-includes, wp-content und wp-content/uploads

Fast geschafft!

Im letzten Schritt ist nochmals die Erstellung neuer .htacces Dateien erforderlich, die du jeweils in die Ordner wp-includes, wp-conent und wp-content/uploads einfügst.

Alle drei Codes verhindern, dass ein direkter Zugriff auf PHP-Daten erfolgen kann.

3.3.1 Code für wp-includes

# PHP Zugriff verhindern

<Files wp-tinymce.php>

allow Allow from all

</Files>

<FilesMatch „\.(?i:php)$“>

<IfModule !mod_authz_core.c>

Order allow,deny

Deny from all

</IfModule>

<IfModule mod_authz_core.c>

Require all denied

</IfModule>

:</FilesMatch>

<Files wp-tinymce.php>

Allow from all

</Files>

<Files ms-files.php>

Allow from all

</Files>

3.3.2 Code für wp-content und wp-content/uploads

# PHP Zugriff verweigern

<FilesMatch „\.(?i:php)$“>

<IfModule !mod_authz_core.c>

Order allow,deny

Deny from all

</IfModule>

<IfMod_authz_core.c>

Require all denied

</IfModule> :</FilesMatch>

4. Troubleshooting

Gelegentlich kann es nach Änderungen der WordPress htaccess zu Problemen kommen.

Die klassischen Vertreter möchte ich hier kurz vorstellen und Problemlösungen bieten.

4.1 Ich kann meine WordPress htaccess nicht finden

Wer vergeblich auf der Suche nach seiner .htaccess Datei im Hauptverzeichnis ist, sollte nicht direkt in Panik verfallen. Hierfür gibt es in der Regel zwei Gründe und ich bin mir zu 99,9 Prozent sicher, dass einer dieser Gründe auch bei dir zutrifft 😉.

Grund 1: Deine .htaccess existiert noch nicht

Gerade nach Neuinstallationen kommt es häufig vor, dass WordPress die .htaccess Datei noch nicht erstellt hat.

Eingangs habe ich erwähnt, dass die .htaccess Datei im Hauptverzeichnis vor allem die Aufgabe hat, Permalinks zu steuern. Wenn du also nach er WordPress Installation noch nie Einstellungen > Permalinks aufgesucht hast, wird die Datei schlichtweg noch nicht erstellt worden sein.

Besuche also diese Seite, wähle die Linkstruktur die du bevorzugst und speichere einmal ab.

Eine htaccess Datei wird erst erstellt, nachdem du die Permalinks erstmalig bearbeitet hast.

Grund 2: Dein FTP-Programm blendet versteckte Dateien aus

Viele FTP-Programme blenden standardmäßig versteckte Dateien aus.

Dies kann jedoch in der Regel innerhalb der Einstellungen geändert werden. Bei FileZila erfolgt dies unter Server > Auflistung versteckter Daten erzwingen.

In Filezila lassen sich versteckte Dateien wie die .htaccess einfach einblenden

4.2 Ich erhalte einen „Internal Server Error“

Der Horror!

Du hast die WordPress htaccess verändert, aktualisierst deine Website und erhältst einen „Internal Server Error“.

Nachdem du die htaccess bearbeitet hast, kann es zu einem external Server Error kommen.

Auch hier gilt es jedoch, Ruhe zu bewahren, denn die Lösung ist meist deutlich näher also du denkst.

Oftmals liegt die Ursache eines solchen Fehlers darin, dass dein Hosting Provider die Änderungen an der WordPress htaccess nicht akzeptiert, was schlussendlich zu einem Server-Fehler führt.

Genauer wird die Funktion „mod_rewrite“ nicht unterstützt, was jegliche Veränderungen an der .htaccess unmöglich macht.

Dies ist jedoch meist nur bei „Massenhostern“ der Fall. Ich hatte solche Erfahrungen vor einigen Jahren mit One.com gemacht. Ob Änderungen an der WordPress htaccess bei One.com heute immer noch nicht möglich sind, kann ich dir jedoch leider nicht beantworten.

Ich selbst nutze seit vielen Jahren Webgo und bin damit zu 100 % zufrieden.

Zurück zum eigentlichen Thema: der Fehlermeldung.

Um die Erreichbarkeit deiner Website wiederherzustellen, solltest du zunächst die veränderte .htaccess Datei durch die Originaldatei ersetzen (die du hoffentlich, wie von mir empfohlen, gesichert hast).

Nun sollte der Fehler bereits verschwunden sein.

Im zweiten Schritt trittst du an deinen Hosting-Anbieter heran, um abzuklären, ob Änderungen an der WordPress htaccess überhaupt zugelassen sind.

Wenn nicht: Hosting Provider wechseln!

5. Häufig gestellte Fragen

Was ist die .htaccess Datei in WordPress?

Die WordPress htaccess ist eine Datei, welche die Arbeit des Apache-Servers regelt, mit dem die meisten Hoster arbeiten. Sie bestimmt in ihrer Ursprungsform den Umgang mit Permalinks und regelt die Arbeitsweise von Plugins.

Durch das Hinzufügen von Code-Schnipseln kann die Datei jedoch auch dazu verwendet werden, Umleitungen, Zugangsberechtigungen und Sicherheitsstandards zu managen.

Die WordPress htaccess ist eine der wichtigsten Dateien in WordPress überhaupt.

Sind mehrere .htaccess Dateien möglich?

Ja.

Es sind sogar mehrere .htaccess Dateien empfohlen. Und zwar jeweils eine für das Hauptverzeichnis, sowie für wp-admin, wp-includes, wp-content und wp-content/uploads.

Ist 100 % Schutz vor Hackern mit der .htaccess möglich?

Leider nein.

Zwar können einfache Modifizierungen an der .htaccess dazu führen, dass es Hackern deutlich schwerer gemacht wird. Einen 100-prozentigen Schutz können diese dennoch nicht bieten.

Wie kann ich die .htaccess bearbeiten?

Um die WordPress htaccess zu bearbeiten, gibt es zwei Möglichkeiten.

1. Du nutzt ein FTP-Programm wie FileZila, lädst die Datei herunter und bearbeitest diese im Anschluss mit einem Texteditor lokal auf deinem Rechner. Im Anschluss lädst du die bearbeitete Datei wieder hoch.
2. Du nutzt ein WordPress-Plugin, das Arbeiten an der .htaccess direkt im Backend ermöglicht. Hier lässt sich in der Regel jedoch nur die .htaccess im Root-Verzeichnis verändern.

Affiliate Links sind mit einem Stern markiert *. Wir erhalten eine kleine Provision, für dich ändert sich nichts.