Mehr Speed, mehr Sicherheit: die optimale .htaccess

Die Webserver-Konfigurationsdatei .htaccess ist eine der wichtigsten Dateien deiner Website-Installation. Viel kann diese oftmals noch unterschätzte Datei leisten. Sie kann zu einem wahren Performance-Schub einer Website ebenso beitragen, wie zu erhöhter Sicherheit. Beides ist in der heutigen Zeit wichtig. Die Ladegeschwindigkeit ist bereits seit längerem ein Rankingfaktor für die Position der eigenen Website in den Google-Suchergebnissen. Zudem werden immer wieder WordPress-Websites gehackt, weil kein Augenmerk auf die Sicherheit der Website gelegt wird. In diesem Artikel stelle ich meine eigene .htaccess-Datei vor, die ich im Laufe der Zeit immer weiter verfeinert und optimiert habe.

Die optimale .htaccess Datei für mehr Speed und Sicherheit

Eine optimale .htaccess Datei

Eine optimale .htaccess-Datei wird es niemals fertig konfiguriert geben können, da sich viele Punkte individuell auf die eigene Website beziehen werden. Auch die von mir vorgestellte Datei ist nur ein großer Teil dessen, was bei mir aktiv ist. Einiges muss noch auf persönliche Bedürfnisse angepasst werden, doch mit dem folgenden Code hat man bereits sehr viel erreicht. Vor allem ist eine optimale Grundlage für eine wirklich schnelle Website geschaffen worden. Nicht vergessen habe ich dabei den Bereich Sicherheit, der sich zum Teil auf WordPress bezieht.

Die komplette Datei kann bei GitHub heruntergeladen werden.

Teil 1: Browser-Caching

Im Abschnitt Caching wurde an alles gedacht, auch an das Zwischenspeichern der beliebten Webfonts, die dann allerdings auf dem eigenen Server liegen sollten. In der Sektion für die Bildformate findet das neue Grafik-Format WebP Berücksichtigung. Dateien, die sich im Allgemeinen eher selten ändern, zum Beispiel JavaScripts, bekommen einen weit in der Zukunft definierten Cache-Header. Feeds hingegen werden nur eine Stunde gecached, fast alle anderen Dateien hingegen einen Monat. Zu beachten ist, dass in der Datei statische HTML-Seiten für eine schnellere Auslieferung für eine Stunde (3.600 Sekunden) in den Speicher befördert werden. Wer das nicht möchte, setzt stattdessen ein access plus 0 seconds ein.

Der ETag-Header wird durch die .htaccess deaktiviert, da ein Last-Modified-Header gesendet wird. Zudem ist die ETag-Technologie bekannt als langsam, daher nutzen wir sie nicht. Wichtig zu erwähnen ist, dass ein keep-alive-Header gesendet wird. Das erlaubt dem Browser das gleichzeitige Laden mehrerer Dateien und sorgt für einen weiteren Performance-Schub.

Bitte beachten: Da auch das CSS zwischengespeichert wird, sollte man, wenn man öfter etwas daran ändert, entweder die Datei nach einer Änderung umbenennen, oder eine Versionierung implementieren. Ich bevorzuge die zweite Lösung, die ein Teil eines zukünftigen Artikels sein wird.

Ein Klick öffnet die komplette Datei bei GitHub
htaccess-caching

Teil 2: Die komprimierte Auslieferung der Dateien

Viele Vorschläge für .htaccess Dateien, die im Netz zu finden sind, sind nur rudimentär und unvollständig. Alle denkbaren und wichtigen Datei-Formate werden durch meine .htaccess komprimiert ausgeliefert, damit ein wirklicher Geschwindigkeitsvorteil entsteht.

Ein Klick öffnet die komplette Datei bei GitHub
Kompression

Teil 3: Allgemeine Sicherheitseinstellungen

Der Grand­sei­g­neur des Webdesigns – Jeff Starr von Perishable Press – feilt bereits seit Jahren an seiner Blockliste für die .htaccess. Die neueste Version seiner Firewall, die 6G, ist ein Manifest der Sicherheit und wird gerne durch einige WordPress-Security-Plugins kopiert, weil sie so effektiv ist. Sie schützt unter anderem vor Cross-Site-Scripting und Schadcode-Implementierung über die Erweiterungen von URLs. Hackversuche werden trotz des minimalen Codes wirkungsvoll unterbunden und der Code arbeitet sehr effektiv.

Ein Klick öffnet die komplette Datei bei GitHub
6G-Firewall-Blacklist

Teil 4: Wichtige Sicherheitseinstellungen für WordPress

Die allgemeine Beliebtheit des Content-Management-Systems WordPress ist leider der Grund dafür, dass es sich immer öfter den Hackversuchen böswilliger Mitmenschen ausgesetzt sieht. Mit einigen Zeilen Code in der .htaccess kann man dem vorbeugen. Kommt dann noch eine Absicherung des Administrator-Zugangs der Website hinzu, kann man die Site als sicher ansehen, wenn man die Basics wie das rechtzeitige Update von WordPress, Theme und Plugins beherrscht.

Wie man den Admin-Zugang einer WordPress-Website per .htaccess und .htpasswd wirkungsvoll absichert, haben wir bereits beschrieben. Ebenfalls wird die potenziell unsichere XML-RPC-Schnittstelle von WordPress mit diesem Code völlig abgeschaltet. Wer die Schnittstelle nutzen möchte, weil er zum Beispiel mit der neuen WordPress-Desktop-App arbeitet, muss den Bereich des Codes auskommentieren. Das geschieht mit einer vorgesetzten Raute (#) pro Code-Zeile. Die Absicherung des Adminbereichs ist bereits vorbereitet, wenn du diese Form der Sicherheit nicht nutzen möchtest, dann kommentiere diesen Bereich aus.

Ein Klick öffnet die komplette Datei bei GitHub
Einstellungen in der htaccess für die Sicherheit von WordPress

Download der kompletten .htaccess Datei

Die komplette .htaccess Datei kann bei GitHub heruntergeladen werden.

Fazit

Mit dieser .htaccess Datei sind wir schon ziemlich nahe am Optimum. Die Datei ist eine hervorragende Grundlage, in der nur noch einige kleine, seitenspezifische Details ergänzt werden müssen (vermutlich). Mir und meiner Website leistet diese Datei sehr gute Dienste, und, ich hoffe stark, dir auch. Die Datei ist zudem so aufgebaut, dass es keine nervigen Probleme mehr bei Google Page Speed Insights gibt. Falls jemand von euch der Meinung ist, es gäbe da noch Verbesserungsbedarf, dann schreibe er/sie bitte einen Kommentar. Auch ich lerne gerne noch dazu :-)

Links zum Thema:

(dpe)

ist freier Journalist, Spezialist für WordPress und WordPress Sicherheit und ist im Internet unterwegs, seit es in Deutschland existiert. Seit 2012 schreibt er für DrWeb. Nebenbei ist er Autor mehrerer E-Books zu den Themen Lebenshilfe, Marketing und WordPress.

Sortiert nach:   neueste | älteste | beste Bewertung
David
Gast
David
3 Monate 4 Tage her

Hey Andreas, das ist eine tolle .htaccess, eine meiner Seiten hat direkt einen Boost von 72 auf 94 Page Speed Score erhalten. Allerdings habe ich jetzt das Problem, dass nach dem Refresh sämtliche Bilder nicht angezeigt werden, weisst du da vielleicht Rat?

Franz Meyer
Gast
Franz Meyer
3 Monate 4 Tage her

Danke für diesen Artikel!

SiGa
Gast
SiGa
3 Monate 4 Tage her

Toller Artikel! Hatte schon einige der Snippets in place, aber doch noch Neues in deinem Artikel gefunden – herzlichen Dank dafür!

Roger Rehnelt
Gast
Roger Rehnelt
3 Monate 4 Tage her

Danke für diese Mega-htaccess-Datei!
Es sollte aber jedem bewusst sein, dass der Apache mit jedem Aufruf diese Datei parst. Ist es hier nicht besser (sofern man die Möglichkeit hat), die Einstellungen direkt in die Apache-Konfiguration zu schreiben?
Bei einem Test mit den Daten hat mir ModPageSpeed einen Strich durch dir Rechnung gemacht. Sobald es aktiv ist, zerschießt es das ganze Layout. Ich habe jetzt nicht weiter nach gesehen, wollte nur mal meckern! 8-D

Lars
Gast
3 Monate 4 Tage her

Klasse, die werde ich gleich mal einbauen!

Jörg Holz
Gast
3 Monate 4 Tage her

Wer seine Webseite in Bezug auf Sicherheit überprüfen möchte, kann das hier tuen:

https://securityheaders.io

Erschreckend wieviele Seiten, gerade auch bekannte, Hüstel, abschneiden. ;-))

Lars Mielke
Gast
3 Monate 4 Tage her

Einige schöne Sache bei, vor allem der Abschnitt von Jeff Starr.
Stimmt schon, der Server rennt natürlich wie verrückt, wenn man das alles noch einmal aus der .htaccess raus und in die vHost config einträgt. Aber das ist bei dem ganzen shared webhosting Kram nicht möglich.

Regina Müller
Gast
3 Monate 4 Tage her

Hallo Andreas,
leider habe ich einen Server mit Nginx, da greift die normale .htaccess nicht, und die Einträge müssen verändert werden.
Es wäre toll, wenn es Deine .htaccess für Nginx angepasst gäbe…

trackback

[…] Die Webserver-Konfigurationsdatei .htaccess ist eine der wichtigsten Dateien deiner Website-Installation. Viel kann diese oftmals noch unterschätzte Datei leisten. Sie kann zu einem wahren Performance-Schub einer Website ebenso beitragen, wie zu erhöhter Sicherheit. Beides ist in der heutigen Zeit wichtig. Die Ladegeschwindigkeit ist bereits seit längerem ein Rankingfaktor für die Position der eigenen Website in den Google-Suchergebnissen. Zudem werden immer wieder WordPress-Websites gehackt, weil kein Augenmerk auf die Sicherheit der Website gelegt wird. In diesem Artikel stelle ich meine eigene .htaccess-Datei vor, die ich im Laufe der Zeit immer weiter verfeinert und optimiert habe. Mehr lesen… […]

Gianni
Gast
3 Monate 4 Tage her

Schöne Zusammenstellung. Auch bei reinen HTML-Projekten stellenweise sehr nützlich.

André Wiedemann
Gast
André Wiedemann
3 Monate 3 Tage her

Hallo,
ist diese .htaccess für alle Webseiten nutzbar oder ist diese hier speziell auf WordPress abgestimmt?
Mit freundlichen Grüßen
André Wiedemann

Daniel
Gast
Daniel
3 Monate 3 Tage her

Hi, erstmal danke das du diese super arbeit mit uns teilst ;-)

Ich musste folgende Einstellung deaktivieren das die Webseite richtig dargestellt wird:

# 6G:[REQUEST STRINGS]

RedirectMatch 403 (?i)([a-z0-9]{2000})
RedirectMatch 403 (?i)(https?|ftp|php):/
RedirectMatch 403 (?i)(base64_encode)(.*)(\()
RedirectMatch 403 (?i)(=\\\’|=\\%27|/\\\’/?)\.
RedirectMatch 403 (?i)/(\$(\&)?|\*|\“|\.|,|&|&?)/?$
RedirectMatch 403 (?i)(\{0\}|\(/\(|\.\.\.|\+\+\+|\\\“\\\“)
# RedirectMatch 403 (?i)(~|`||:|;|,|%|\\|\s|\{|\}|\[|\]|\|) <—

Karl Marx
Gast
Karl Marx
2 Monate 28 Tage her

Netter Artikel – leider nicht zu Ende geführt.
Eine Verlinkung auf die Datei hätte so wohl auch genügt.. :(.
Ich hätte mir da lieber genauere Erklärungen gewünscht, Zeile für Zeile.
Manche Sachen erkennt man ja auf Anhieb, aber bevor ich blind links „irgendeine“ htaccess aktiviere,
würde ich doch gerne wissen was die einzelnen RegEx Matches z.B. wirklich matches – ohne dass ich und andere jetzt jeder einzeln die Zeilen nachforschen.

Daniel
Gast
Daniel
2 Monate 26 Tage her
Ein Fehler ist mir aufgefallen, Zeile 137: Header append Vary User-Agent env=!dont-vary Da sollte besser so aussehen: Header append Vary User-Agent env=!dont-vary Außerdem hab ich beim Rewrite in Zeile 311 nicht nur meine Domain eingesetzt, sondern aus https:// auch https?:// gemacht, damit die Seite auch ohne SSL funktioniert (je nach Bedarf sollte man hier prüfen, was Sinn macht – wenn https immer verfügbar ist, macht es natürlich Sinn, das auch zu erzwingen). Zudem hab ich es mir für Apache 2.4 und die neuen Zugriffsbeschränkungen angepasst. Das geht in den -Direktiven jeweils, indem Order Deny,Allow Deny from all ersetzt wird durch… Read more »
Daniel
Gast
Daniel
2 Monate 26 Tage her

Sorry, da alles in HTML-Tags automatisch rausgefiltert wird, macht meine Antwort so wenig Sinn…
Hab meine angepasste Datei nun hier hochgeladen:
https://gist.github.com/anonymous/d1afc3513997233c168b

Zeile 137 ist bei mir 137-139, d.h. ich hab die Bedingung außen herum eingefügt.
Die angepassten 6G-Regeln finden sich ab Zeile 218.
Die angepassten Zugriffsbeschränkungen innerhalb der Files-Direktiven (deny auf verschiedene Dateien) sind entsprechend auch drin.

Julian
Gast
2 Monate 23 Tage her

Hallo,

ich bin relativer WordPress Anfänger und technisch nicht wirklich versiert :-). Deshalb meine Fragen:
1. Kann ich wirklich eins zu eins den Code deiner htaccess kopieren und meine aktuelle Datei damit ersetzen und alles funktioniert sofort einwandfrei? Oder ist das als Anfänger eventuell zu gefährlich?
2. Kommt sich diese htaccess mit irgendeinem Cache Plugin in die Quere? (WP Rocket, Super Cache) oder kann man problemlos z.B. neben WP Rocket diese htaccess Datei benutzen?
3. Würde mir diese htaccess im Punkto Pagespeed überhaupt nochmal einen Schub nach vorne bringen, wenn ich bereits ein Caching Plugin benutze?

Gruß
Julian

84CK80N3
Gast
84CK80N3
2 Monate 13 Tage her

Du musst in Zeile 301 den Pfad zur Passwortdatei eingeben und in Zeile 311 Deine Domain.
Sichere Diene Site und Deine Datenbank, dann probiere die htaccess einfach aus. Bei mir hat sie mich bei GoogleSpeedCheck von 72 auf 92 gebracht.

Eugen Mayer
Gast
Eugen Mayer
2 Monate 13 Tage her
Hallo, vielen Dank für die Datei! Funktioniert bei mir bis auf ein kleines Problem sehr gut. Vor allem beim „Chrome“ Browser ist mir aufgefallen, dass aktualisierte Seiten tagelang nur aus dem Browsercache angezeigt werden. Nur nach manuellem neuladen wird die Seite aktualisiert. Das ist für Seiten die täglich geändert werden natürlich nicht sinnvoll. In der Firebugkonsole ist mir aufgefallen, dass bei „Last-Modified“ als Datum „Thu, 01 Jan 1970 00:00:00 GMT“ steht. Gibt es eine Lösung mit der das richtige Änderungsdatum ausgelesen und vom Browser für die Seitenanzeige genutzt wird? Als Laie finde ich keine Lösung, und ich weiss auch nicht,… Read more »
84CK80N3
Gast
84CK80N3
2 Monate 13 Tage her

Vielen Dank für diesen tollen Tipp!
GoogleSpeedCheck von 72 auf !!!92!!!
Habe nur ein Problem: Meine Site ist über https erreichbar. Bin ich auf der Site und gebe http ein, dann wird die auch unter http geladen und klicke ich auf Aktualisieren, wird die Seite mit http und ohne Bilder geladen.
Wie erzwinge ich https?

Jakob
Gast
Jakob
2 Monate 7 Tage her

Erst einmal vielen Dank für diese super Hilfe! Wenn ich alles so einbinde (inklusive den Verbesserungen von Daniel) dann bekomme ich auf meinem Startseiten-Verzeichnis den Fehler „Forbidden 403 Error, Apache Server at (www.meinedomain.de) Port 80“.

Ich musste heute auch in meinem Router (Easybox 803A) Ports freigeben für die PS4 Verbindung. Darunter war auch der Port 80. Hängt das zufällig miteinander zusammen?

Über eine Antwort wäre ich sehr dankbar! =)

(Sorry für den Doppelpost – hatte die Email-Benachrichtigung nicht angehakt. Erster Post kann gelöscht werden.)

Arne Bisgaard
Gast
Arne Bisgaard
1 Monat 28 Tage her

Hallo Andreas,

besten Dank für die ausführliche Anleitung. Ich kann mich dem Tenor nur anschließen. Insbesondere durch Komprimierung habe ich bereits sehr gute Ergebnisse erreicht. Großartig finde ich die Tipps zur Sicherheit, da ich es bislang vermieden habe, irgendwelche ominösen Plugins hierfür zu installieren.

Bei der Aufstellung der „common files“ fehlt das Format .svg

LG Arne

trackback

[…] macht’s. Ein genauerer Einblick in die für WordPress-Seiten relevanten Einstellungen bietet http://www.drweb.de/magazin/die-optimale-htaccess-datei-fuer-mehr-speed-und-sicherheit-69143, dort gibt es über GitHub auch eine vorgefertigte Variante der .htaccess zu beziehen (welche aber […]

wpDiscuz

Mit der Nutzung unseres Angebots erklärst du dich damit einverstanden, dass wir Cookies verwenden. Weitere Informationen

Wir verwenden Cookies, um Inhalte und Anzeigen zu personalisieren, Funktionen für soziale Medien anzubieten und die Zugriffe auf unsere Website zu analysieren. Dadurch geben wir nicht personenbezogene Informationen zur Nutzung unserer Website an unsere Partner für soziale Medien, Werbung und Analysen weiter. Nähere Informationen findest du in unserer Datenschutzerklärung. Durch die Weiternutzung unserer Website (oder das ausdrückliche Klicken auf "Einverstanden") gehen wir davon aus, dass du mit der Verwendung von Cookies einverstanden bist.

Schließen