Optimierungs-Leitfaden für WordPress (Performance und Sicherheit)

Published by Philipp Schuster on

htaccess-Code (Symbolbild)

Mit diesem Leitfaden möchte ich euch Hinweise und Tipps, die ich in den letzten 18 Monaten mit meinem WordPress-Blog gesammelt habe, für eine Optimierung der Performance und Sicherheit weitergeben. Egal ob du dein WordPress gerade frisch eingerichtet hast oder eine bestehende Installation optimieren möchtest, einige dieser Tipps, Plugins und Optimierungen sind sicherlich etwas für dich.

Ich kann natürlich nicht für ein fehlerfreies Funktionieren bei euch garantieren und keine Haftung für eventuelle Schäden übernehmen, aber in meiner WordPress-Installation funktioniert alles jedenfalls sehr gut. Macht sicherheitshalber einfach ein Backup, bevor ihr etwas umstellt.

Wichtige verwendete Plugins und Einstellungen

Plugin-NameAnmerkungen
Acunetix WP Security
→ WordPress.org: Acunetix WP Security

Kategorie: Sicherheit

Acunetix WP Securtiy ist ein kleines Sicherheitsplugin, dass im Großen und Ganzen nur aus ein paar Checkboxen besteht, die ihr aktivieren solltet. Auf das Live-Tracking-Tool solltet ihr aus datenschutzrechtlichen Gründen übrigens vielleicht besser verzichten. Acunetix WP Security Plugin-Settings

Autoptimize
→ WordPress.org: Autoptimize

Kategorie: Performance

Autoptimize komprimiert und optimiert euch eure CSS und JavaScript-Dateien (zum Beispiel unnötige Leerzeichen und Kommentare entfernen) und fasst die Dateien in einer Datei zusammen. Dabei habt ihr auch einen kleinen Spielraum im Plugin, das könnt ihr euch (mit der nötigen Erfahrung bzw. Ahnung) dann genau konfigurieren. Grundsätzlich müssen aber nur die drei Checkboxen für die Optimuerng/Kompression von HTML, CSS und JavaScript aktiviert werden.

Ich verwende das Plugin in Verbindung mit WP Super Cache und es gibt keine Probleme. Bei “Google Pagespeed Insights” konnte ich durch das Plugin einige Punkte dazu gewinnen.

WP Super Cache
→ WordPress.org: WP Super Cache

Kategorie: Performance

Hierbei handelt es sich um das Caching-Plugin, welches mir am meisten zusagt. Es ist nicht zu einfach, nicht zu kompliziert und vor allem funktioniert es sofort ohne Probleme. Ich empfehle euch “PHP-Caching” zu nutzen, da bei Mod-Rewrite-Caching die PHP-Seiten in der Regel nicht neu generiert werden und so die Captchas in euren Kommentarfunktionen ablaufen und dann geht die Kommentarfunktion in vielen Fällen nicht. Ich habe diesbezüglich viel experimentiert und bin mit meinem Captcha-Plugin (Captcha by BestWebSoft) bei einer maximalen Caching-Zeit von 6000 Sekunden angelangt. Gecachte Seiten mit diesem Alter haben noch ein funktionierendes Captcha und werden ab dem Überschreiten des Alters erneuert. Ferner empfehle ich folgende Einstellungen, diese funktionieren bei mir so sehr gut.

WP Super Cache Plugin-Einstellungen

Die 304-Modified-Option ist bei mir deaktiviert, weil ich das Browser-Caching über meine .htaccess-Datei regle.

Serverkonfiguration/.htaccess für mehr Sicherheit und Performance

In meiner Serverkonfiguration beziehungsweise .htaccess-Datei habe ich eine ganze Menge rumgespielt und einige Verbesserungen eingearbeitet. Ob ihr die Änderungen bei euch so einarbeiten könnt hängt davon ab, ob ihr einen Apache-Webserver verwendet beziehungsweise .htaccess interpretiert werden kann. Ferner müssen bestimmte Module installiert sein, wie zum Beispiel mod.rewrite oder mod.deflate.

Die folgenden Code-Bestandteile können vor oder nach “# BEGIN WordPress” bzw. “# END WordPress” in die .htaccess-Datei eingefügt werden.

htaccess-Code (Symbolbild)

htaccess-Code (Symbolbild)

Zweck.htaccess-Code
Ausgabe von PHP-Meldungen deaktivieren, diese könnten sonst für Angreifer interessante Informationen liefern
php_flag display_errors off
Auslieferung von wp-config verhindern: Sollte das PHP-Modul ausfallen, könnte diese Datei im Klartext (inklusive DB/FTP-Passwörtern) ausgeliefert werden. Das wird hiermit verhindert
<Files wp-config.php>
  order allow,deny
  deny from all
</Files>
Auslieferung von liesmich/readme.html verhindern: Diese Dateien verraten die Versionsnummer der WordPress-Installation (einfaches löschen reicht nicht, da die Dateien bei jedem Update neu angelegt werden)
<FilesMatch "(liesmich|readme)\.html">
  order allow,deny
  deny from all
</FilesMatch>
Auslieferung von .htaccess/.htpasswd verhindern: In unwahrscheinlichen Fällen könnten diese Dateien plötzlich an Besucher ausgeliefert werden, das gilt es zu verhindern.
<Files ~ "^\.ht">
  Order allow,deny
  Deny from all
</Files>
Auslieferung von WordPress-Include-Dateien verhindern
# https://codex.wordpress.org/Hardening_WordPress
# Block the include-only files.
<IfModule mod_rewrite.c>
  RewriteEngine On
  RewriteBase /
  RewriteRule ^wp-admin/includes/ - [F,L]
  RewriteRule !^wp-includes/ - [S=3]
  RewriteRule ^wp-includes/[^/]+\.php$ - [F,L]
  RewriteRule ^wp-includes/js/tinymce/langs/.+\.php - [F,L]
  RewriteRule ^wp-includes/theme-compat/ - [F,L]
</IfModule>
#this won't work well on Multisite, as RewriteRule ^wp-includes/[^/]+\.php$ - [F,L] would prevent the ms-files.php file from generating images
Datei wp-login.php per HTTP-Auth schützen: So können Brute-Force-Attacken schon auf Serverebene geblockt werden, bevor PHP agiert. Aber Achtung: Das müsst ihr euch individuell anpassen, ich empfehle einen .htaccess-Generator. Folgendes könnt ihr als Orientierung verwenden.
# Nutzt zum Beispiel den All-Inkl-htacces-Generator: https://all-inkl.com/wichtig/htaccessgenerator/
<Files wp-login.php>
  # SSL erzwingen damit Anmeldedaten nicht unverschlüsselt übertragen werden
  # Achtung: SSL muss am Server aktiviert sein und ein Zertifikat hinterlegt sein, sonst könntet ihr hier in einer endlosen Weiterleitungs-Schleife landen
  RewriteEngine On
  RewriteCond %{SERVER_PORT} !=443
  RewriteRule ^(.*)$ https://DOMAIN_NAME.DOMAIN_ENDUNG/$1 [R=301,L]
 
  AuthUserFile /****************/.htpasswd
  AuthGroupFile /dev/null
  AuthName "Bitte authentifizieren!"
  AuthType Basic
  <Limit GET>
    require valid-user
  </Limit>
</Files>
htaccess-Datei von HTML5-Boilerplate: Serverkonfigurationsdatei vom H5BP-Projekt (Serverkonfiguration auf Experten-Niveau), kümmert sich um Browser-Caching, Komprimierte Übertragung und noch vieles mehr.Download bei GitHub

Verwendete Quellen für htaccess-Code


Philipp Schuster

Hi, I'm Philipp and interested in Computer Science. I especially like low level development, making ugly things nice, and de-mystify "low level magic".

2 Comments

Peter · 2016-03-25 at 19:22

Also einige Optimierungen sollte man dann doch lieber von Hand vornehmen. Und Plugins wie Autoptimize verschwenden viele Ressourcen soweit ich weiß. Immer besser direkt im Theme dafür sorgen, dass gar nicht erst so viele Dateien zu einer zusammengefügt werden müssen. Ansonsten toller Artikel mit vielen nützlichen Tipps.

Ich selbst bin gerade via Google auf der Suche und finde nun nach und nach die Perlen in Sachen Optimierung heraus. Empfehlen kann ich allen denen es ähnlich geht noch http://fastwp.de/wordpress-performance/ wo relativ übersichtlich eine Menge Tipps aufgelistet werden.

Bin jetzt dabei all das gefundene nach und nach auf meiner kleinen Nischenseite umzusetzen und das dauert leider noch. Wollte sie eigentlich schon vor einer Woche online bringen, aber jetzt möchte ich vorab doch noch etwas mehr optimieren, um von Anfang an die bestmögliche Performance liefern zu können.

    Philipp Schuster · 2016-03-25 at 19:26

    Hallo Peter,
    “Immer besser direkt im Theme dafür sorgen, dass gar nicht erst so viele Dateien zu einer zusammengefügt werden müssen”
    Da hast du absolut Recht, es liegt aber nicht nur am Theme sondern auch an teilweise mehreren Plugins die hier und da Skripte und Codeschnipsel einfügen.

Leave a Reply

Your email address will not be published.