In diesem Artikel geht es um ein sehr technisches Thema, das ich dir aber natürlich einfach aufbereite: die tollen Möglichkeiten der .htaccess Datei. In dieser Datei können Konfigurationsanweisungen für deinen Webserver hinterlegt und auf ein gewisses Verzeichnis bezogene Regeln festgelegt werden.
Das heißt also, die in der .htaccess festgelegten Regeln gelten immer für das Verzeichnis, in der diese Datei liegt. Im Normalfall legt man die meisten Konfigurationen in der .htaccess Datei des Hauptverzeichnisses ab, da diese für diesen gesamten Ordner samt Unterordner gilt, wodurch WordPress .htaccess Regeln für den gesamten Blog übernimmt.
Ich werde dir in diesem Artikel einige coole Codeschnipsel zeigen, mit denen du deinen Blog ganz einfach schneller und sicherer machen kannst. Diese Codeschnipsel musst du in der .htaccess deines Hauptverzeichnisses einfügen.
In WordPress .htaccess Dateien richtig benutzen
Bevor es los geht, muss ich dir noch ein paar Kleinigkeiten zu dieser besonderen Datei erklären.
Die .htaccess ist eine sehr mächtige Datei mit der man sehr viel gutes aber auch schlechtes anstellen kann. Trägst du hier etwas falsches ein, kann das dazu führen, dass deine Website nicht mehr erreichbar ist.
Darum mache am besten ein komplettes WordPress Backup, bevor du loslegst!
Schutz der .htaccess
Bevor wir also loslegen, solltest du zunächst einmal die Dateiberechtigungen für die .htaccess festlegen. WordPress schlägt vor (und ich kann das nur bestätigen), die Berechtigung 644 zu hinterlegen.
Dafür loggst du dich mit deinem FTP Programm auf deinem Webserver ein, machst einen Rechtsklick auf die .htaccess Datei in deinem Hauptverzeichnis, und klickst im Anschluss auf “Dateiberechtigungen” oder ähnliches. Nun gibst du als Berechtigung 644 ein, und sicherst damit die Datei vor Veränderungen von außen ab.
Standardinhalte
WordPress benötigt von Haus aus nur eine einzige Regel in der .htaccess um zu funktionieren. Diese Regel ist dafür da, dass man die URLs in WordPress ändern kann. Das braucht man beispielsweise, um sprechende URLs zu erstellen. Dieser Eintrag sollte also bereits in deiner .htaccess stehen, wenn nicht, füge ihn unbedingt ein:
# BEGIN WordPress
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
# END WordPress
Bevor du Änderungen einfügst: Achtung!
Erstelle dir auf jeden Fall zunächst ein Backup der .htaccess. Das geht ganz einfach indem du per FTP die aktuelle Datei herunterlädst und auf deinem Computer speicherst. Sollte dann etwas schief gehen, kannst du einfach diese gespeicherte Datei wieder hochladen und die veränderte überschreiben. Schon läuft wieder alles rund.
Noch eine letzte Kleinigkeit bevor es endlich ans Werk geht:
Füge die Codeschnipsel entweder vor “#BEGIN WordPress” ein oder hinter “#END WordPress”. Ich habe die Codeschnipsel jeweils am Anfang mit einer Zeile kommentiert, damit du den Überblick behalten kannst und weißt, welcher Code welche Auswirkungen hat. Kommentare beginnen immer mit einem # und werden von Browsern nicht interpretiert sondern dienen lediglich der Übersichtlichkeit.
Auch die .htaccess muss bei einem Seitenaufruf immer zunächst einmal von dem Browser geladen werden, achte also darauf, sie möglichst schlank zu halten und nur die Codes einzufügen, die du wirklich benötigst.
So, jetzt geht es aber los 🙂
WP-admin nur für ausgewählte IPs zulassen
Mit diesem Schnipsel kannst du die Login Seite für alle Nutzer, außer die von dir eingegebenen sperren. Logischerweise kannst du damit sehr effektiv verhindern, dass sich jemand ungewolltes an der Login Seite zu schaffen macht.
Das Ganze funktioniert nur, wenn du und die anderen Benutzer eine statische IP Adresse besitzen. Bei einer dynamischen IP wird bei jedem neuen Einwählen eine neue IP vergeben. Ist das bei dir oder deinen Benutzern der Fall, kannst du diesen Trick nicht anwenden.
Deine IP Adresse kannst du ganz einfach herausfinden, indem du auf ein Online-Tool wie beispielsweise www.meine-aktuelle-ip.de gehst.
In der .htaccess werden die IP Adressen der freizugebenden Nutzer eingetragen. Du musst also jeden hinzukommenden Nutzer nach seiner IP Adresse fragen, und diese mit in die .htaccess eintragen.
# Zugriff auf wp-admin nur für vorgegebene IPs
order deny,allow
deny from all
allow from IPAdresse1
allow from IPAdresse2
WP-config.php für alle sperren
Die wp-config.php Datei enthält deine Datenbankdaten, Zugangsdaten zu WordPress und weitere, sehr sensible Daten. Damit niemand einfach in die Datei reinschauen und sich an den Daten zu schaffen machen kann, kannst du sie über die .htaccess sperren.
# Verbietet allen den Zugang zur wp-config
<files wp-config.php>
order allow,deny
deny from all
</files>
Verhindere, dass deine Bilder genutzt werden
Sogenanntes Image Hotlinking wird immer wieder missbraucht. Das bedeutet, dass jemand eines deiner Bilder auf seiner Website einbaut, aber über deinen Server abruft. Dadurch entsteht zusätzlicher Traffic, was die Geschwindigkeit deines Blogs beeinträchtigen kann. Zudem sind viele Hostingpakete auf eine gewisse Menge an Traffic pro Monat begrenzt, wodurch du durch dieses Image Hotlinking Probleme bekommen kannst.
Mit diesem Codeschnipsel in der .htaccess kannst du einstellen, dass bei dem Versuch ein Bild über deinen Server einzubinden, stattdessen ein von dir vorgegebenes Bild angezeigt wird.
Achtung: Dieser Code sorgt in manchen Fällen dafür, dass Bilder in RSS Readern nicht mehr angezeigt werden. Wenn du RSS nicht anbietest oder auf die Bilder verzichten kannst, ist das kein Problem. In den anderen Fällen füge den Code einfach hinzu, und überprüfe, ob die Bilder nach wie vor angezeigt werden.
# Verhindert Image Hotlinking. Ersetze die letzte URL mit einem Bildlink.
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?deinblog.de [NC]
RewriteRule \.(jpg|jpeg|png|gif)$ http://deinbild.jpg [NC,R,L]
Browser Caching aktivieren
Jetzt gibt es zwischendurch einen kleinen Tipp zur Geschwindigkeitsoptimierung mit Hilfe der WordPress .htaccess Datei. Ich habe diesen und weitere Tipps bereits in dem Artikel “7 Tricks, wie du WordPress schneller machen kannst” vorgestellt.
Dieser etwas längere Code aktiviert das sogenannte Browser Caching. Bei einem Seitenaufruf speichert ein Browser zunächst alle Dateien offline und zeigt sie dann an. Dadurch entsteht die Ladezeit einer Website. Durch das Browser Caching wird dem Browser erlaubt, bei dem nächsten Seitenaufruf einfach wieder diese bereits heruntergeladenen Dateien abzurufen, ohne sie erneut herunterzuladen.
Damit das funktioniert, wird den Browsern die maximal erlaubte Speicherdauer für verschiedene Dateitypen vorgegeben. Dadurch werden nach der vorgegebenen Zeit die Dateien neu geladen, falls Änderungen erfolgt sind.
# Browser Caching aktivieren
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"
GZIP Komprimierung aktivieren
Noch ein zweiter Tipp für die Geschwindigkeitsoptimierung deiner Website. Du kannst mit einem kurzen Codeschipsel die sogenannte GZIP Komprimierung aktivieren.
Möchtest du deine Website-Ladezeit optimieren, erfährst du hier alles über die Optimierung der Ladezeit mit WP Rocket.
GZIP ist ein Webstandard um Dateien zu komprimieren. Das kannst du dir vorstellen wie ein .zip oder .rar Archiv auf deinem Computer.
Die Dateien werden so stark es geht verkleinert und dann erst durch den Browser wieder entpackt. Dadurch wird dein Blog sehr viel effizienter und schneller geladen.
Gehe nach der Aktivierung auf checkgzipcompression.com und gib die URL deines Blogs ein. Du wirst nun sehen, ob GZIP aktiviert ist und was dadurch eingespart wird.
# Aktiviert GZIP Komprimierung
<IfModule mod_deflate.c>
SetOutputFilter DEFLATE
</IfModule>
Zugriffe auf .htaccess verhindern
Zusätzlich zu der Einstellung der Dateiberechtigungen solltest du die .htaccess mit der Hilfe der .htaccess für Zugriffe von außen sperren. Klingt komisch, funktioniert aber 🙂
Wie schon gesagt, hat die .htaccess große Auswirkungen auf die Funktionsweise deines Blogs und kann einen Haufen Schaden anrichten. Aus diesem Grund sollte man alles dafür tun, sie so gut wie möglich zu schützen.
#Zugriffe auf .htaccess verhindern
<files ~ "^.*\.([Hh][Tt][Aa])">
order allow,deny
deny from all
satisfy all
</files>
Bestimmte Nutzer ausschließen
Spammer loswerden und Hacker ausschließen, klingt doch super oder?
Ist es auch und vor allem geht es mit der .htaccess ganz einfach.
Bei den Spamkommentaren wird dir in WordPress direkt die IP Adresse angezeigt. Für Hackversuche ist es etwas komplizierter, aber trotzdem machbar an die IP Adresse zu kommen. Hierfür musst du entweder in die Logfiles deines Servers schauen oder mit einem Plugin wie iThemes Security arbeiten.
Die herausgefundenen IP Adressen kannst du dann alle in diesen Codeschnipsel in der .htaccess eintragen, wodurch sie keinen Zugriff mehr auf deinen Blog haben. Ersetze einfach die X mit der IP Adresse.
#Nutzer per IP ausschließen
<Limit GET POST>
order allow,deny
deny from XXX.XXX.XX.X
deny from XXX.XXX.XX.X
allow from all
</Limit>
301 Weiterleitungen
Wenn du deinen Blog auf eine andere Domain umziehst, komplette Artikel oder Seiten auf eine neue URL umstellst oder aus einem anderen Grund eine Weiterleitung erstellen musst, ist das in WordPress mit der .htaccess ganz einfach.
Eine 301 Weiterleitung (301 Redirect) sorgt dafür, dass Nutzer beim Anklicken eines Links, der auf eine alte Seite verweist, auf die neue Seite weitergeleitet wird. Das ist nicht nur für deine Nutzer sondern auch für Google äußerst wichtig, denn so verlierst du keine Kraft durch die Links auf deine Seite, die ohne die Weiterleitung ins Leere führen würden.
Hinter dem “Redirect 301” trägst du zunächst die alte URL ein, machst dahinter ein Leerzeichen und setzt die neue URL dahinter.
#301 Weiterleitungen
Redirect 301 /alteseite.html http://neuewebsite.de/neueurl
Redirect 301 / http://neuewebsite.de/
Auslesen von Nutzernamen verhindern
Wusstest du, dass man deinen Nutzernamen ganz einfach herausfinden kann, indem man /?author=1 an deine Domain anhängt? Probiere es mal aus, WordPress leitet dich sofort auf die Autorenseite von Benutzer eins weiter. Dadurch können Hacker deinen Nutzernamen für den Login super einfach herausfinden.
Klar, damit kommen sie auch nicht weit, aber man sollte es Hackern so schwierig wie möglich machen.
Wenn du diesen Code in deiner .htaccess hast, wird bei der Eingabe von /?author=X die Startseite deines Blogs angezeigt.
# Verhindert das einfache Auslesen von Nutzernamen
RewriteEngine On
RewriteBase /
RewriteCond %{QUERY_STRING} .*author=(.+.?) [NC]
RewriteRule (.*) /blog/?author= [NC,L,R=301]
Hast du andere .htaccess Codes, mit denen du deinen Blog verbesserst? Kommentiere doch einfach und lass uns teilhaben 🙂