Das muss unbedingt in deiner .htaccess stehen!

WordPress .htaccess einrichten

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. Aufgrund ihrer Macht wird sie häufig Ziel von Hackern.

Schutz der .htaccess

WordPress .htaccess Dateiberechtigungen einstellen

Stelle die Dateiberechtigungen der .htacces auf 644

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
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# 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 „Vom Trabbi zum Porsche – 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

Wordpress .htaccess GZIP aktivieren

Die GZIP Komprimierung reduziert die Ladezeit

Noch ein zweiter Tipp für die Geschwindigkeitsoptimierung deines Blogs. Du kannst mit einem kurzen Codeschipsel die sogenannte GZIP Komprimierung aktivieren.

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 🙂

Jonas Tietgen

Jonas ist leidenschaftlicher Blogger und Gründer von wp-ninjas.de. Wenn er nicht gerade an seinem eigenen Blog arbeitet oder anderen Bloggern hilft, echte WordPress Ninjas zu werden, verbringt er seine Zeit mit Basketball und Tennis - egal ob zuschauen oder selber spielen.

27 Kommentare

  1. Martin   •  

    Hallo Jonas,
    ein hilfreicher Artikel!
    Was macht die dritte Zeile beim Redirect?

    Gruss
    Martin

    • Jonas Tietgen Jonas Tietgen   •     Autor

      Hey Martin,

      das ist einfach eine weitere Weiterleitung. In diesem Beispiel leitet das die Startseite „/“ auf die Website „http://neuewebsite.de/“ um.

      Grüße
      Jonas

      • Martin   •  

        aber nur die Startseite, oder? Also nicht auch alle Unterseiten!?

        • Jonas Tietgen Jonas Tietgen   •     Autor

          Ja, möchtest du alle Unterseiten auf eine gewisse Seite umleiten, müsste das so aussehen:

          RewriteEngine On
          RewriteBase /
          RewriteCond %{REQUEST_URI} !^/(index\.html)?$ [NC]
          RewriteRule ^.*$ http://deinewebsite.de [L,R=301]

  2. Martin   •  

    Interessante Sicherheitskonzepte, welche mir noch nicht bekannt waren. Danke!

  3. Sascha   •  

    Echt super Post mit vielen guten Tipps.
    Vor allem der letzte Tipp zum verbergen des Authors ist interessant und sinnvoll.

    Nach meinen Beobachtungen, ist das Angriffstelle Nr1. Bei WordPress.

    • Jonas Tietgen Jonas Tietgen   •     Autor

      Hey Sascha,

      danke für das Lob! 🙂
      Ja, es ist eine Angriffsmöglichkeit weniger, das ist immer gut.

      Grüße
      Jonas

  4. Pingback: Ich möchte einen Blog. Was muss ich beachten? – Blog – Design Domus

  5. Sascha   •  

    Hallo Jonas,

    klasse Beitrag, vielen Dank. Könntest du mir noch bitte erklären wie Ich in der .htaccess setzen kann, dass wenn Ich statt „https://123456.de/“ „https://123456.de//“ oder https://123456.de eingeben, dass dann eine Weiterleitung auf …de/ oder …de stattfindet. Was ist denn zu Empfehlen? Lieber mit trailingslash oder besser ohne? Danke vorab und gruß
    Sascha

    • Jonas Tietgen Jonas Tietgen   •     Autor

      Hey Sascha,

      ich würde ein trailing slash einfügen 🙂

      Grüße
      Jonas

      • Sascha   •  

        Danke, aber wie kann Ich diese Umleitung in der .htaccess umsetzen? Danke und Gruß
        Sascha

  6. Luis   •  

    Genau das habe ich gesucht um meine „Plugin-Abhängigkeit“ in den Griff zu bekommen. Lieben Dank dafür! 🙂

    • Jonas Tietgen Jonas Tietgen   •     Autor

      Hey Luis,

      immer schön so wenig Plugins wie möglich, finde ich gut 🙂

      Grüße
      Jonas

  7. Merrit   •  

    Hallo Jonas ein wirklich toller Artikel!

    Zu : Zugriffe auf htaccess verhindern. Wo genau gebe ich den Code welchen Du oben erwähnt hast ein? In die vorhandenen htaccess oder muss ich noch einmal eine neue anlegen?

    Ich möchte meine Login URL verändern. Der Login Bereich soll nicht mehr über domain…/wp-admin oder wp-login aufrufbar sein, sondern über z.B domain…/meinBereich.

    Ich habe den Login Bereich zusätzlich mit htacess Passwortbereich geschützt.

    Nun meine Frage: gibt es einen Code für die htaccess um die Login URL zu verändern?(Ich möchte kein Plugin hierfür nutzen).Wie würde dieser lauten?Und kannn ich den htacess Passwortschutz dann trotzdem noch benutzen?

    Danke:)Und einen schönen 3.Advent!!!

    Viele Grüße Merrit

    • Jonas Tietgen Jonas Tietgen   •     Autor

      Hey Merrit,

      die Codes gehören alle in die .htaccess in deinem Hauptverzeichnis. Dort darf es nur eine geben.
      Um die URL des Loginbereichs zu verschieben, kannst du den folgenden Code in die .htaccess einfügen:
      RewriteRule ^admin$ http://DEINE_SEITE.com/wp-login.php [NC,L]
      Dadurch erreichst du den Login über /admin

      Den Passwortschutz über die .htaccess kannst du weiterhin nutzen, musst natürlich aber den Pfad anpassen auf den er zugreift.

      Grüße
      Jonas

  8. Merrit   •  

    Danke Jonas:)

    Wenn ich den Login Bereich über meinbereich aufrufen möchte, müsste ich dann anstatt admin im nachfolgenden Code meinbreich eingeben?

    RewriteRule ^admin$ http://DEINE_SEITE.com/wp-login.php [NC,L]

    Danke!!

  9. Merrit   •  

    Vielen Dank!

    Ich habe für meine Seite ein SSl Zertifikat und alles auf https umgestellt.
    Müsste ich dann in dem Code https eingeben?

    Danke!!

    • Jonas Tietgen Jonas Tietgen   •     Autor

      Hey Merrit,

      klar, die Pfade müssen alle immer auf https:// laufen 🙂

      Grüße
      Jonas

  10. Merrit   •  

    Hallo Jonas ich bin es noch einmal.

    Ich habe dass mit dem Code: RewriteRule ^ meinbereich$ http://DEINE_SEITE.com/wp-login.php [NC,L] ausprobiert.

    Ich kann mich jetzt über meinbereich einloggen.Jedoch ist die Login URL meinewebseite…/wp-admin immer noch aktiv, wie kann ich es erreichen, dass nur meinbereich als Login url funktioniert?

    Danke!

  11. Paul   •  

    Hi Jonas,ich hoffe Du hattest einen guten Start ins Neue Jahr!

    zu Deinem Blogeintrag:…… 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 ……

    Wo genau finde ich die Logfiles?
    In der WordPress Installation über FTP ?

    Danke!

    • Jonas Tietgen Jonas Tietgen   •     Autor

      Hey Paul,

      Logfiles findest du in einem Ordner auf deinem Webspace. Je nach Hoster heißt der Ordner unterschiedlich, manchmal sind die Logfiles sogar deaktiviert.
      Schau mal nach einem Ordner namens „Usage“ oder „Logs“

      Grüße
      Jonas

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.