Kontaktiere uns: +49 6131 8944 10410 | Email | Kontaktformular

Best WordPress .htaccess Optimierung – Der Komplette Guide

25. November 2019

Mit diesen Tipps und Einträgen zur Best WordPress .htaccess Datei, haben wir es von knapp 2,7 Sekunden auf eine durchschnittliche Ladezeit von 0,8 Sekunden geschafft.
Wir zeigen nur die wirklich essentiellen Einträge und erklären auch genau, weshalb wir viele Einträge die du in anderen Anleitungen findest bewusst nicht empfehlen.

Was ist eine .htaccess Datei und wieso ist diese wichtig?

.htaccess steht für hypertext access, also „Hypertext-Zugriff“. Dies ist die Konfigurationsdatei für Deine Webseite bzw richtigerweise für den Ordner, indem sich diese auf Deinem Apache Server befindet. Diese Datei ist eine reine Textdatei und mit den richtigen Anweisungen, die wir Dir gleich geben super einfach zu bearbeiten, selbst wenn Du keine Vorkenntnisse hast.

Wo finde ich meine .htaccess Datei für meine WordPress Webseite?

Diese Datei findest Du normalerweise im Stammverzeichnis Deiner Webseite.
Am einfachsten kannst Du diese finden und bearbeiten, wenn Du Dich per FTP zu Deinem Webserver verbindest. Dies sieht dann wie folgt aus:
/server/MeineWebseitenOrdner/.htaccess

Deine WordPress htaccess fehlt?

So erstellst du eine WordPress .htaccess Datei:

Wenn deine .htaccess fehlt und Du diese nicht wie oben beschrieben finden kannst, kommt hier die Lösung. Es gibt zwei einfache Wege:

  1. Erstelle einfach eine Text-Datei im “Root-Folder” mit dem Namen “.htaccess” und füge den minimalen Inhalt für WordPress ein:
    # BEGIN WordPress
    RewriteEngine On
    RewriteBase /
    RewriteRule ^index\.php$ - [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /index.php [L]
    # END WordPress
    Quelle: https://wordpress.org/support/article/htaccess/
  2. Gehe in WordPress Admin Bereich auf “Einstellungen” -> “Permalinks”. Wähle die gewünschte Einstellung für deine Permalinks und speichere. In dem Moment, in dem du speicherst, wird deine aktuelle .htaccess aktualisiert oder eine neue angelegt, wenn es noch keine gab.

Was kann man in der .htaccess alles festlegen?

…Die Frage ”Was kann man hier nicht festlegen?”…wäre sicher einfacher.
Die Möglichkeiten sind hier fast unbegrenzt. Wichtig ist es zu wissen, dass diese Datei für den Ordner in dem diese liegt und alle Unterordner gilt. Man kann diese allerdings überschreiben, wenn Du in einem Unterordner eine weitere .htaccess anlegst.

  • Du kannst bestimmte Dateien oder Ordner mit einem Passwort schützen
  • Weiterleitungen für bestimmte URLs oder die gesamte Domain einrichten
  • Firewall Regeln errichten
  • Hot-Loading für Bilder deaktivieren

und viele weitere Regeln,um die Ladegeschwindigkeit Deiner Webseite zu verbessern.

Tipps für die optimale WordPress .htaccess Datei

Zur Vorbereitung:

  1.  Die .htaccess Datei wird bei jedem Webseitenaufruf für jede angeforderte Datei ausgewertet, deswegen solltest du diese so schlank und effektiv wie möglich halten.
  2. Achte unbedingt auf eine Fehlerfreie schreibweise, da der Server bei der Auswertung dieser Datei sehr penibel ist. Schon bei kleinen Fehlern, könnte es sein, dass Deine Webseite nicht mehr erreichbar ist.
  3. Da wir nun 2. berücksichtigen, wissen wir, dass wir eine Sicherheitskopie der .htaccess Datei machen sollte, bevor wir diese bearbeiten.

Hier unsere must have .htaccess Einträge für deine WordPress Webseite:

Nur 7 Schritte zur Best WordPress .htaccess Datei! Für WordPress oder auch jede andere Webseite.

1. Redirect von HTTP auf HTTPS

Beachte: Was sollte nicht (unbedingt) in die .htaccess?

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
</IfModule>

2. GZIP Komprimierung aktivieren

# BEGIN GZIP Compression
<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE text/vtt
AddOutputFilterByType DEFLATE text/x-component
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE application/rss+xml
AddOutputFilterByType DEFLATE application/js
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE application/x-javascript
AddOutputFilterByType DEFLATE application/x-httpd-php
AddOutputFilterByType DEFLATE application/x-httpd-fastphp
AddOutputFilterByType DEFLATE application/atom+xml
AddOutputFilterByType DEFLATE application/json
AddOutputFilterByType DEFLATE application/ld+json
AddOutputFilterByType DEFLATE application/vnd.ms-fontobject
AddOutputFilterByType DEFLATE application/x-font-ttf
AddOutputFilterByType DEFLATE application/font-woff2
AddOutputFilterByType DEFLATE application/x-font-woff
AddOutputFilterByType DEFLATE application/x-web-app-manifest+json font/woff
AddOutputFilterByType DEFLATE font/woff
AddOutputFilterByType DEFLATE font/opentype
AddOutputFilterByType DEFLATE image/svg+xml
AddOutputFilterByType DEFLATE image/x-icon
</IfModule>
# END GZIP Compression

3. Manchmal ändert sich eine URL oder Du willst eine URL durch eine besser passende ersetzen. Wie das geht? Ganz einfach!

RewriteEngine On
Redirect 301 /oldurl/ /newurl

4. Verhindere Hotlinking

Verhindere, dass andere Webseiten Bilder von Dir einbetten. So schonst Du die Performance Deines Servers und Deinen Datendurchsatz.
#disable hotlinking of images with forbidden or custom image option
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?DEINEDOMAIN.com [NC]

#Google Hotlinking enable
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?google.com [NC]
RewriteRule \.(jpg|jpeg|png|gif)$ – [NC,F,L]

5. Aktiviere Browsercaching um die Ladezeit Deiner Webseite bei folgenden Besuchen zu verbessern

<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType image/jpg "access 1 year"
ExpiresByType image/jpeg "access 1 year"
ExpiresByType image/gif "access 1 year"
ExpiresByType image/png "access 1 year"
ExpiresByType text/css "access 1 month"
ExpiresByType application/pdf "access 1 month"
ExpiresByType text/x-javascript "access 1 month"
ExpiresByType application/x-shockwave-flash "access 1 month"
ExpiresByType image/x-icon "access 1 year"
ExpiresDefault "access 2 days"
</IfModule>

6. Setzen von Expire Headers

Was tun wir nicht alles für eine rasend schnelle Webseite? Diese bestimmen, wie lange ein Browser Dokumente, die er einmal geladen hat, nicht erneut anfragt. Dies kann die Ladezeit stark beschleunigen. Man sollte die Zeitangaben mit Vorsicht genießen und nicht überziehen, da so auch Änderungen an diesen Dateien für diese Zeit nicht neu ausgeliefert werden.
# BEGIN Expire headers
<IfModule mod_mime.c>
AddType font/opentype .otf
AddType application/font-woff .woff
AddType application/font-woff2 .woff2
AddType application/x-font-ttf .ttf
AddType application/vnd.ms-fontobject .eot
AddType image/svg+xml .svg
</IfModule>
<IfModule mod_expires.c>
ExpiresActive on
ExpiresDefault "access plus 1 month"
# CSS
ExpiresByType text/css "access plus 1 month"
# Data interchange
ExpiresByType application/atom+xml "access plus 1 hour"
ExpiresByType application/rdf+xml "access plus 1 hour"
ExpiresByType application/rss+xml "access plus 1 hour"
ExpiresByType application/json "access plus 0 seconds"
ExpiresByType application/ld+json "access plus 0 seconds"
ExpiresByType application/schema+json "access plus 0 seconds"
ExpiresByType application/vnd.geo+json "access plus 0 seconds"
ExpiresByType application/xml "access plus 0 seconds"
ExpiresByType text/xml "access plus 0 seconds"
# Favicon (cannot be renamed!) and cursor images
ExpiresByType image/vnd.microsoft.icon "access plus 1 week"
ExpiresByType image/x-icon "access plus 1 week"
# HTML - Behält die Website eine Stunde im Cache, neues wird erst nach Ablauf einer Stunde
# angezeigt. Wenn nicht gewuenscht, bei 3600 eine Null eintragen
ExpiresByType text/html "access plus 3600 seconds"
# JavaScript
ExpiresByType application/javascript "access plus 1 month"
ExpiresByType application/x-javascript "access plus 1 month"
ExpiresByType text/javascript "access plus 1 month"
# Manifest files
ExpiresByType application/manifest+json "access plus 1 week"
ExpiresByType application/x-web-app-manifest+json "access plus 0 seconds"
ExpiresByType text/cache-manifest "access plus 0 seconds"
# Media files
ExpiresByType audio/ogg "access plus 1 month"
ExpiresByType image/bmp "access plus 1 month"
ExpiresByType image/gif "access plus 1 month"
ExpiresByType image/jpeg "access plus 1 month"
ExpiresByType image/png "access plus 1 month"
ExpiresByType image/svg+xml "access plus 1 month"
ExpiresByType image/webp "access plus 1 month"
ExpiresByType video/mp4 "access plus 1 month"
ExpiresByType video/ogg "access plus 1 month"
ExpiresByType video/webm "access plus 1 month"
# Web fonts
# Embedded OpenType (EOT) ExpiresByType application/vnd.ms-fontobject "access plus 1 month"
ExpiresByType font/eot "access plus 1 month"
# OpenType
ExpiresByType font/opentype "access plus 1 month"
# TrueType
ExpiresByType application/x-font-ttf "access plus 1 month"
# Web Open Font Format (WOFF) 1.0
ExpiresByType application/font-woff "access plus 1 month"
ExpiresByType application/x-font-woff "access plus 1 month"
ExpiresByType font/woff "access plus 1 month"
# Web Open Font Format (WOFF) 2.0
ExpiresByType application/font-woff2 "access plus 1 month"
# Other
ExpiresByType text/x-cross-domain-policy "access plus 1 week"
</IfModule>

7. Wo bleiben die ganzen Sicherheitserweiterungen, die man überall liest?

Wir haben uns dafür entschieden diese hier nicht mit aufzunehmen. Stattdessen empfehlen wir Dir, Dich für ein Plugin wie iThemes Security oder Wordfence zu entscheiden. Wir versuchen die Anzahl der PlugIns so gering wie möglich zu halten, aber manchmal sind diese wirklich super! Gerade wenn man diese Dinge händisch einträgt oder sich die Anforderungen ändern, wird es schnell sehr unübersichtlich. Mit der Hilfe eines der PlugIns, lässt sich das viel übersichtlicher und einfacher erledigen.

Was sollte nicht (unbedingt) in die .htaccess?

Das ist immer eine gute Frage…was gehört hier wirklich rein und was sollte eher anderswo untergebracht werden? Denn wie wir vorhin schon sagten, zur besten WordPress .htaccess Datei gehört es auch, diese schlank zu halten.

Das Weiterleiten von HTTP auf HTTPS und von www. auf ohne www. oder umgekehrt.
Komisch? Weil wir das oben dennoch aufgelistet haben?
Hier solltest du ausprobieren, ob die Weiterleitung in Deiner .htaccess Verzögerungen verursacht oder du dies ggf. auch in der Serverkonfiguration einstellen kannst.
Wir hatten diese Weiterleitung erst in unserer .htaccess Datei, jedoch konnten wir die Ladezeit unserer Webseite um ~ 1 Sekunde verkürzen, als wir diese Weiterleitung über die Serverkonfiguration gelöst haben.

Dies deckt sich auch mit den Aussage von Apache:
“Generell sollte jedoch die Verwendung von .htaccess-Dateien nach Möglichkeit vermieden werden. Jede Konfiguration, die Sie in eine.htaccess-Datei einfügen möchten, kann genauso effektiv in einem Abschnitt <Verzeichnis> in Ihrer Hauptserver-Konfigurationsdatei vorgenommen werden.” 

https://httpd.apache.org/docs/current/howto/htaccess.html

Denn die Serverconfig wird nur einmal pro httpd ausgeführt und nicht bei jedem Datei-Request. Dies ist wesentlich performanter!

Das Schützen Deiner Webseite mit Passwort, ist zwar auch über die .htaccess möglich, jedoch würde ich Dir empfehlen, dies über Dein CMS zu machen.

Fazit

Wie so oft haben wir mit der .htaccess Datei ein sehr mächtiges Tool zur Hand.
Um aber eine bestmögliche WordPress .htaccess zu erstellen, sollten wir aus den oben erwähnten Gründen darauf achten, diese so wenig wie möglich zu nutzen, bzw so schlank wie möglich zu halten.
Dies gilt natürlich nicht nur für WordPress .htaccess Dateien, sondern .htaccess im Allgemeinen. Oft bieten sich Wege an, die vermeintlich einfache Einstellung in der .htaccess anderswo zu erledigen und somit die Performance des Servers und damit Deiner Webseite zu steigern.
Also merken wir uns folgendes:

  • Die .htaccess Datei nur nutzen, wenn Du die Änderung nicht an anderer Stelle vornehmen kannst. ( z.B. Serverconfig).
  • Wenn Du die .htaccess nutzt, dann halte die Änderungen oder Einträge so schlank wie möglich. Schlank im Sinne von Auswirkungen nicht Zeilen!
  • Mache Dir vorher unbedingt eine Sicherheitskopie Deiner funktionierenden .htaccess. 
  • Teste Deine Webseite nach jeder Änderung Deiner .htaccess Datei, da die Änderungen direkt sichtbar sind.

Du bist einfach kein Code Mensch oder dir ist es zu gefährlich an der .htaccess zu arbeiten?
Dann lass dir die Arbeit einfach von PlugIns abnehmen. Hier findest du unsere Lieblingsauswahl an PlugIns für WordPress, die dir viele dieser Schritte abnehmen:

Must have WordPress PlugIns für Ladezeiten unter 1 Sekunde lesen.

Adrian Kamp

Adrian Kamp

Adrian ist ein SEO Nerd mit jahrelanger Erfahrung im Bereich Suchmaschinenmarketing. Angefangen mit 16 als Hobby, hat sich sein Interesse für SEO immer weiter ausgeprägt. Bevor er zu Kamputer kam, verbrachte er Jahre damit, seine Fähigkeiten bei verschiedenen anderen Firmen und Projekten zu verfeinern.
25. November 2019
Menü schließen