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 🙂
Hallo Jonas,
ein hilfreicher Artikel!
Was macht die dritte Zeile beim Redirect?
Gruss
Martin
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
aber nur die Startseite, oder? Also nicht auch alle Unterseiten!?
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]
Interessante Sicherheitskonzepte, welche mir noch nicht bekannt waren. Danke!
Hey Martin,
gerne doch 🙂
Viel Erfolg
Jonas
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.
Hey Sascha,
danke für das Lob! 🙂
Ja, es ist eine Angriffsmöglichkeit weniger, das ist immer gut.
Grüße
Jonas
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
Hey Sascha,
ich würde ein trailing slash einfügen 🙂
Grüße
Jonas
Danke, aber wie kann Ich diese Umleitung in der .htaccess umsetzen? Danke und Gruß
Sascha
Wie im Artikel beschrieben:
Redirect 301 / http://neuewebsite.de/
Und das muss Ich dann für jede Seite machen?
Nein, einmal in die .htaccess und gut ist 🙂
Okay, super. Vielen Dank
Vielen Dank, mir hat es auch geholfen. 🙂
Genau das habe ich gesucht um meine „Plugin-Abhängigkeit“ in den Griff zu bekommen. Lieben Dank dafür! 🙂
Hey Luis,
immer schön so wenig Plugins wie möglich, finde ich gut 🙂
Grüße
Jonas
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
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
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!!
Genau, es müsste wie folgt lauten:
RewriteRule ^ meinbereich$ http:// DEINE_SEITE.com/wp-login.php [NC,L]
Dann sollte es funktionieren 🙂
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!!
Hey Merrit,
klar, die Pfade müssen alle immer auf https:// laufen 🙂
Grüße
Jonas
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!
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!
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
[…] wieder Leute, die versuchen, es einem einfacher zu machen – wie hier mit Tipps, was in die .htaccess unbedingt rein […]
hallo,
ich wollte mal Fragen ob jemand hier mir helfen kann. Ich komme in meine WP Seite nicht rein.
User und Pass stimmen aber die Anmeldung bleibt bei drehen und drehen… und passiert nichts
http://www.archmorph.com
Ich habe vieles probiert aber nichts hilft!
MfG
Federico
Hey,
ich würde dir empfehlen erst mal die klassischen Schritte vorzunehmen und alle Plugins / das Theme über FTP zu deaktivieren. Vermutlich wird eines der Plugins dieses Problem verursachen.
Grüße
Jonas
Hallo Jonas,
„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.“
–> welches ist das Hauptverzeichnis? (und ja, die Frage ist selbst mir fast ein bischen peinlich)
Viele Grüße,
Antje
Hey Antje,
das Hauptverzeichnis ist der Ort, an dem deine WordPress Installation liegt 🙂
Grüße
Jonas
danke für die schnelle Antwort… habe eben auch in einem anderem Artikel von dir gelesen, dass die htaccess automatisch erstellt wird bei der wp-installation – das hätte mir die Suche auch schon erleichtert ^^
ich habe aber ein großes Verständnisproblem: mein Hoster ist allinkl, in der Anleitung für manuelle Installation steht, dass man nach dem WP hochladen die in den Unterordner wordpress entpackten Dateien in den meinedomain.de-ordner schieben soll, also /meinedomain.de/wordpress/ zu /meinedomain.de/ —> wenn ich das so mache, ist dann /meinedomain.de/ das Hauptverzeichnis? und was soll das bringen***? Zumal, und da komm ich nicht mit, am Ende der Installationsanleitung steht, dass nach der Installation von WP unter /meinedomain.de/wordpress/ eine neue Datei namens .htaccess erstellt werden soll, die leer sein und lediglich die Zugriffsberechtigung auf 666 gestellt werden soll
*** (reicht es nicht, im wp backend unter Einstellungen die URL entsprechend zu setzen?)
ich hoffe, ich habe meine Frage/n halbwegs verständlich formuliert
Viele grüße,
Antje
PS: wenn ich wordpress im Unterordner wordpress lasse, kann man dann die config eine Ebene höher nach /meinedomain.de/ schieben und bringt das tatsächlich so wahnsinnig viel für die Sicherheit? oder „reicht“ es im Prinzip, deinen Sicherheitsempfehlungen hinsichtlich der htaccess zu folgen und ist damit sicher genug?
PPS: ich bin ganz, ganz dankbar für deine Artikel. andererseits: je mehr man liest, auf umso mehr Dinge wird man gestoßen, von denen man noch nie was gehört hat. und manchmal wünscht man sich die Zeiten zurück, in denen man die 1-Click-Installation für ausreichend hielt
Nachtrag: die Formulierung „htaccess-Datei des Hauptverzeichnisses“ … dh, für jedes Verzeichnis kann eine eigene htaccess erstellt werden? ist das sinnvoll? was ist, wenn sich Anweisungen widersprechen? wird dann auf die übergeordnete zurückgegriffen?
Ja, es kann für jedes Verzeichnis eine erstellt werden. Vorrang hat immer die, aus dem jeweiligen Verzeichnis.
Hey Antje,
also für einen Laien ist die Verschiebung nicht ganz so einfach und kann einiges kaputt machen…
Bei der Verschiebung geht es darum, dass du mehrere Installationen besser verwalten kannst und nicht durcheinander kommst.
Grüße
Jonas
ich kauf jetzt einfach blog´n´roll 🙂
Hi,
wenn man die Autorenseite per HTACCESS umleitet, betrifft das bei mir persönlich auch den Bulkeditor in Wordpress.
Wenn ich normale Content-Seiten mit dem Bulkeditor bearbeiten möchte, werde ich auf die Hauptseite vor dem Speichern umgeleitet, da dieses Formular über GET arbeitet und automatisch das ?/&author=XX drin hat. Kann man das umgehen irgendwie? oder hat jemand dasselbe Phänomen beobachtet?
okay, habs selbst gelöst. Wenn man die HTACCESS um eine weitere Condition erweitert und somit das Backend ausschließt funktioniert der Bulk-Editor wieder.
`
# Verhindert das einfache Auslesen von Nutzernamen
RewriteEngine On
RewriteBase /
RewriteCond %{QUERY_STRING} .*author=(. .?) [NC]
RewriteCond %{REQUEST_URI} !/wp-admin/
RewriteRule (.*) /blog/?author= [NC,L,R=301]
`
Danke für deinen Hinweis Chris! 🙂
Hilfe,
ch habe die 301 Umleitung so eingegeben wie es hier steht. Jetzt habe ich einen Umleitungsfehler und komme nicht mehr auf meine Website. Warum musste ich eine 301 Umleitung legen, weil ich solchen Ratschlägen nachgehe wie dieser hier.
Verdammt, was mach ich dich denn jetzt?
Scheisse geht mir jetzt auch so.
ich glaube von ihm brauchen wir keine Antwort zu erwarten…
aber kann jemand anders hier helfen?
das folgende ist das einzige was bei mir drin steht
# BEGIN WordPress
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ – [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
# END WordPress
#301 Weiterleitungen
Redirect 301 / http://paartherapie-hamburg.info
und ich bekomme nur eine 403 fehler angezeigt… danke. 🙁
Moin Ped,
als erstes mal: Ruhig Blut 🙂 Einfach die hinzugefügten Codezeilen wieder raus nehmen, und es läuft wieder alles.
Ich kümmere mich gleich um eine Lösung und schaue nach dem Problem.
Grüße
Jonas
<3 geil. das ging ja super schnell! damit habe ich nicht gerechnet. ich nehme alles zurück.
ja. die berechtigung habe ich nochmal gecheckt. die datei liegt im hauptverzeichnis. den inhalt habe ich komplett gelöscht und da steht erstmal gar nichts drin. dennoch :
Forbidden
You don't have permission to access / on this server.
Apache Server at carrierecoaching.de Port 80
Alles löschen ist auch keine Lösung, denn das folgende muss auf jeden Fall drin stehen bleiben:
# BEGIN WordPress
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
# END WordPress
ok. ich habe auch die datei komplett gelöscht… dann mache ich eine neue und schreibe nur das da rein.
erstmal danke. ich muss leider gleich selber weg. berichte aber wie es lief.
es würde mich eigentlich reichen wenn ich alles auf http://paartherapie-hamburg.info vielleicht mit einer 301 umlenken kann. die seite hat nicht soviel periorität selbst, obwohl ich auch den inhalt nach und nach übertragen will.
Dann stelle die Umleitung doch einfach im Control Panel deines Hosters ein, das geht einfacher als mit Code rumzumachen 🙂
Liegt deine .htaccess denn im Hauptverzeichnis? Die Regel ist richtig, der Fehler muss woanders liegen.
Hey,
als erstes öffnest du die .htaccess und entfernst den Code für die Umleitung. Dann läuft deine Seite wieder 🙂
Wenn es einen Fehler verursacht, dann stimmt irgendwas an dem Code wohl nicht…
Grüße
Jonas
Korrekt eingegeben, wie hier beschrieben, verursacht der Code kein Fehler. Irgendwas muss beim Eintragen, fehlerhaft übertragen worden sein.
Lösung: Per FTP auf den Server verbinden und die Änderungen wieder rückgängig machen.
HALLO;
Hallo,
ich habe das dann auch so gemacht, also die htaccess geöffnet und den Code entfernt. danach lief es wieder Vielleicht lag es an meiner defekten URL, die die Endlosschleife verursacht hat. Bevor ich SEO Yoast installiert hatte, war alles in Ordnung. Mittlerweile stimmt gar nichts mehr, die Plugins Smush it und Catchify sind ausgefallen und alles was ich bisher gemacht habe, war für die Katz. Nie im Leben würde ich noch einmal so was machen.Im Netz steht viel Mist und die Kommentare sind auch nicht immer echt. Ich habe gestern Abend mein Problem in der Jobbörse von Wordpress eingereicht und hoffe, dass die mir gegen Geld meine Seite wieder in Ordnung bringen. Den Kommis nach zu urteilen, verstehen ja alle immer alles auf Anhieb, nur ich verstehe es nicht. Sorry, war nicht böse gemeint, fühle mich nur ziemlich im Stich gelassen.
Hallo Jonas,
danke für den tollen Artikel! Im Prinzip habe ich alles verstanden, aber eine Vorab-Frage, um ganz sicher in der richtigen .htaccess-Datei die Veränderungen vorzunehmen:
Ich verfüge über 4 Domains. Ist gemeint, dass ich die Modifizierungen jeweils in der .htaccess-Datei der einzelnen Domains vornehme
(- in diesen finde ich auch die von Dir angegebene „Grundregel“:
# BEGIN WordPress
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ – [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
# END WordPress
allerdings am Beginn steht zusätzlich: -)
oder in der .htaccess-Datei die ich im Ordner „logs“ finde
(- dort finde ich aber eine andere „Regel“, nämlich – hier ohne die exakten Zahlen:
Options +Indexes
RemoveHandler .html
RemoveType .html
AddType text/html .html
Satisfy any
Order Deny,Allow
Allow from xxx.xxx.xxx.xxx
Deny from all
AuthType Basic
AuthName „Access to /logs“
AuthUserFile /kunden/homepages/xx/xxxxxxxx/htpasswd
Require user xxxxxxxx )
???
Zusatz-Info: Im Ordner „logs“ findet sich in der .htaccess-Datei unter Dateiberechtigungen der numerische Wert 644, in den .htaccess-Dateien der 4 Domains immer der Wert 604! „Ergoogelt“ habe ich dazu, dass 644 bzw. 604 eingesetzt werden soll – wie siehst Du das (- und was ist der Unterschied zwischen 644 und 604? -)?
Liebe neugierige und fragende Grüße!
Marie
Hey Marie,
pro Domain eine htaccess 🙂
In der htaccess sind Dateiberechtigungen angegeben, verstehe ich das richtig?
Grüße
Jonas
Hallo Jonas,
als 1. muss ich um Entschuldigung bitten, denn durch eine Unachtsamkeit habe ich meine Anfrage unvollständig gesendet … trotzdem hast Du die wesentliche Frage geklärt – vielen, vielen Dank – nämlich, dass jede Domain einzeln bedient werden darf/kann/muss …
Dazu noch die ergänzende Frage:
In meiner .htaccess-Datei entspricht der Text Deiner Vorgabe, es existiert aber eine eingeschobene 2. Zeile:
# BEGIN WordPress
Was bedeutet diese Zeile? (Ist wohl OK … oder?)
Und in der Dateiberechtigung finde ich den Wert 604 (nicht wie von Dir vorgeschlagen 644) – „ergoogelt“ habe ich dazu, dass 644 oder 604 eingesetzt werden soll/kann – wie siehst Du das (- und was ist der Unterschied zwischen 644 und 604? -)?
Und, neu, eine letzte Frage: Alle von Dir vorgeschlagenen Befehle in diese schon vorhandene .htaccess-Datei eintragen – also niemals weitere .htaccess-Dateien anlegen, um mehrere, schlanke .htaccess-Dateien zu haben???
Nochmals herzlich fragende Grüße!
Marie
Marie
Der gesamte Part mit „#Begin WordPress“ und den darauffolgenden Zeilen darf nicht gelöscht werden! Trage am besten einfach unterhalb dieses Codeblocks die neuen Regeln ein.
604 passt als Dateiberechtigung auch 🙂
Grüße
Jonas
Danke für die Infos … ja, genau so werd‘ ich’s machen!
HG Marie
aha, jetzt habe ich meinen Anfrage noch einmal gelesen, aber die eingeschobene Zeile wird nicht angezeigt – aha, weil ein html-Code (das war wohl auch bei der ersten Anfrage der Fall!) – ich versuche es nun so:
spitze Klammer auf – IfModule mod_rewrite.c – spitze Klammer zu
HG Marie
Hallo Jonas, toller Beitrag. Vor allem zum Thema Sicherheit.
Kennst du einen Befehl der alle http:// www Anfragen auf https ohne www weiterleitet?
Irgendwie finde ich da nichts richtig gutes 🙁 danke dir!
Moin Florian,
trage einfach unter „Einstellungen“ -> „Allgemein“ die Domain ohne www und mit https ein. Allerdings musst du bei der Umstellung auf SSL noch einiges mehr beachten!
Schau mal hier: https://wp-ninjas.de/wordpress-https/
Grüße
Jonas
Hi!
Wenn man das Script „Zugriffe auf .htaccess verhindern“ einfügt, funktionieren dann trotzdem 301 redirects ohne Einschränkungen?
Gruß Peter
Moin Peter,
ja, das sollten sie 🙂
Grüße
Jonas
Hallo Jonas,
vielen Dank für den hilfreichen Artikel!
Ich möchte gerne eine 404er Seite ausgeben lassen, wenn die URL nicht mehr vorhanden ist. Bisher wird immer auf die Startseite weitergeleitet. Muss ich das nicht auch in der .htaccess deklarieren? Und wenn ja, was genau müsste ich denn eintragen?
Viele Grüße
Becca
Moin Becca,
das klingt, als wäre in der .htaccess oder an einem anderen Ort bereits eine Weiterleitung hinterlegt sein. Wenn du diese findest, einfach rausnehmen 🙂
Grüße
Jonas
Hallo Jonas,
das Problem ist gelöst 🙂 Sobald man anderen davon berichtet, fällt einem plötzlich auf, wo der Fehler liegt 😀
Vielen Dank, dass ich es hier loswerden konnte und viele Grüße
Becca
Ahh, sehr gut! 🙂
Danke für den Beitrag. habe ihn schon länger in meiner Leseliste gehabt, aber es war nie Zeit dafür. Nachdem ich aber diese Woche mit meinem Blog an den Start gegangen bin werde ich die .htaccess morgen gleich mal Bearbeiten. Vorallem das mit dem Benutzernamen hat mich etwas schockiert weil ich extra keinen typischen gewählt habe, damit man ihn nicht leicht erraten kann. Das war natürlich nur bedingt sinnvoll wenn man ihn doch so leicht auslesen kann. :-O
lg
manu
Hallo Jonas, oder auch andere
WordPress-Spezialisten…
Ich habe auf einer WordPress-Seite den wp-Admin Bereich per htaccess geschützt. Leider kann ich jetzt keine passwortgeschützten Unterseiten mehr verwenden, da ich immer nach meinem htaccess Passwort gefragt werde.
Wie könnte ich die htaccess so konfigurieren, dass trotzdem passwortgeschützte Bereiche möglich sind?
Danke im Voraus, alex
Moin Alex,
hast du möglicherweise aus Versehen die gesamte Website per htaccess geschützt?
Grüße
Jonas
Danke für Deine Antwort,
Ich bin hier fündig geworden:
https://www.kuketz-blog.de/htaccess-schutz-wordpress-absichern-teil4/
Was war denn das Problem? 🙂
Hallo Jonas, simpel und doch schwierig…
ich wollte meine admin Seite serverseitig schützen, d.h. durch eben die .htaccess.
Auf meiner Seite befinden sich jedoch passwortgeschützte Bereiche (nichts hochdramatisches, aber doch schützenswert)
Nun war es so, dass bei jedem Aufruf der durch WP passwortgeschützten Seite auch das htpasswd gefragt wurde und wird.
Dafür gibt es prinzipiell keine Lösung…
Außer mit einem Passwort Plugin, welches ich jetzt für die Inhalte auf der Seite verwende,
gefällt mir richtig gut: „passster“
LG Alex
Danke für den g-zip-Tipp: trotz aktivierter Einstellung in «WP-Fastest Cache» hat das mit g-zip erst durch Deine Ergänzung in der htaccess-Datei funktioniert.
I feel Blessed!
Olaf
Hallo Jonas,
sehr schön erklärt und für den Anfänger auch nachvollziehbar. Danke dafür!
Ich wollte meine Webseite nach Deiner Erklärung so schützen, dass man den Nutzernamen nicht mehr „auslesen“ kann. Also in der htaccess die folgenden Daten eingeben:
# Verhindert das einfache Auslesen von Nutzernamen
RewriteEngine On
RewriteBase /
RewriteCond %{QUERY_STRING} .*author=(.+.?) [NC]
RewriteRule (.*) /blog/?author= [NC,L,R=301]
habe es auch so vorgenommen (nachdem ich die htaccess zur Sicherheit für mich kopiert habe) dann lies sich die Homepage aber nicht mehr aufrufen, und eine Fehlermeldung war das Ergebnis.
Schade eigentlich.
Was habe ich falsch gemacht?
Danke für die Hilfe
LG Maria-Anne
Moin,
das ist leider aus der Ferne schwer zu sagen. Am besten fragst du mal bei deinem Hoster nach, meistens haben die auch einen hilfreichen und netten Support 🙂
Grüße
Jonas
Weil ich selbst lange gesucht habe und nichts gefunden hatte:
Alle, die den Ordner „wp-admin“ mit einem zusätzlichen Passwortschutz via htaccess versehen sollten den Zugriff auf „admin-ajax.php“ gewähren mit
Order allow,deny
Allow from all
Satisfy any
da sonst ajax nicht funktioniert und außerdem in den Unterordner „js“ ebenfalls eine htaccess packen mit:
Order allow,deny
Allow from all
Satisfy any
Sonst bekommen eventuell WooCommerce-Kunden oder andere Nutzer im Blog auf Seite „my-account/edit-account“ eine ungewollte Passwortabfrage.
Grüße
Max
Jau, hier werden die Kommentare nicht richtig escaped!
Es ging um eine Files-Anweisung für jeweils
admin-ajax.php
und
password-strength-meter.min.js
Hallo,
Danke für die wertvollen Tipps.
Gerne würde ich das Auslesen von Nutzernamen verhindern. Habe dazu Deinen Code in der .htaccess eingetragen und es funktioniert soweit.
Allerdings funktioniert nun das WordPress-Werkzeug „Daten exportieren“ (wp-adim/export.php) nicht mehr.
In der Adresszeile im Browser erscheint […]“/blog/?author=“ und meine 404-Seite. Ich erhalte keine Download-Datei mehr.
Gibt es dafür eine Lösung?
Gruß
Will
Moin Will,
während dieser Code aktiv ist, funktioniert das exportieren Werkzeug nicht. Da man das ja aber sowieso eigentlich nie nutzt, ist das grundsätzlich kein Problem. Nimm den Code einfach kurz raus, wenn du deine Website mal umziehst und das Werkzeug benötigst.
Grüße
Jonas
Danke. So hab ich’s dann auch gemacht!
Grüße
Will
Hallo,
wird die .htaccess bei jeder WordPress Aktualisierung auch überschrieben oder bleiben die Konfigurationen erhalten?
Vielen Dank und schöne Grüße
Sarah
Moin Sarah,
nein, bei Updates werden nur die WordPress-eigenen Dateien überschrieben 🙂
Grüße
Jonas
Vielen Dank, Jonas, für die schnelle Antwort.
Ich hätte noch einen Vorschlag für deinen Artikel:
Über die .htaccess kann man ja auch die Schnittstelle XMLrpc deaktivieren, über die ja anscheinend auch viele Hacker einfallen.
Vorausgesetzt man benutzt diese Schnittstelle nicht.
Ich hätte folgenden Code verwendet:
order allow,deny
deny from all
Und ist es wichtig in welcher Reihenfolge die Code-Snippets in der .htaccess stehen? (Abgesehen davon dass es hinter dem WP-Teil steht)
Hallo. Evlt. kannst Du mir helfen. Ich stehe vor einem Providerwechsel da u.a. meine php-Version veraltet ist und ich nicht mehr WP updaten kann. Mein WP liegt in einem Unterverzeichnis geschützt mit einer htpasswd. Den Umzug an sich werde ich soweit hinkriegen. Nur die htaccess im Rootverzeichnis gibt mir ein Rätsel auf. Dort steht in der ersten Zeile FCGIWrapper /home/www/username/fcgid/php54-fcgid .php. Kann ich das löschen oder wie gehe ich damit um in meiner neuen Serverlandschaft.
Moin Harry,
frage das am besten deinen neuen Hoster, der kennt seine Serverinfrastruktur am besten 🙂
Grüße
Jonas
So simpel und bin nicht selber drauf gekommen – Wp-admin nur für ausgewählte IPs zulassen ist genial.
Danke für den Tip!
Moin Wolfgang,
sehr gerne! Achte darauf, dass sich deine IP Adresse allerdings ändern kann, wenn du keine statische hast 🙂
Grüße
Jonas
Nützliche Informationen
Über die .htaccess-Datei
Vielen Dank und schöne Grüße
ِAysar
Hey,
ich es auch möglich, die wp-admin unterseite per .htaccess zu verschleiern?
spricht die url von http://www.domain.de/wp-admin auf z.b. http://www.domain.de/hidden-login zu ändern?
Moin Joshua,
dafür empfehle ich dir das Plugin „WPS Hide Login“, zu dem ich hier eine Anleitung habe:
https://www.youtube.com/watch?v=sFnMp7nRJNc&t=1s
Grüße
Jonas
Super Beitrag und sehr gut erklät. Danke dafür.
Sehr gerne! 🙂
Hi zusammen,
ich finde echt keine Lösung oder ich übersehe einfach mein Problem. Die Seite hat natürlich https:// – und sollte immer umgeleitet von http:// auf https:// – aber das läuft nicht. Die Startseite und alle Unterseiten sind weiterhin über http:// zu erreichen – was läuft da falsch in der .htaccess… könntet Ihr mir helfen…
Danke!
# BEGIN WordPress
# Die Anweisungen (Zeilen) zwischen `BEGIN WordPress` und `END WordPress` sind
# dynamisch generiert und sollten nur über WordPress-Filter geändert werden.
# Alle Änderungen an den Anweisungen zwischen diesen Markierungen werden überschrieben.
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ – [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
# END WordPress
# BEGIN WP-Optimize Gzip compression
# Compress HTML, CSS, JavaScript, Text, XML and fonts
AddType application/vnd.ms-fontobject .eot
AddType font/ttf .ttf
AddType font/otf .otf
AddType font/x-woff .woff
AddType image/svg+xml .svg
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE application/rss+xml
AddOutputFilterByType DEFLATE application/vnd.ms-fontobject
AddOutputFilterByType DEFLATE application/x-font
AddOutputFilterByType DEFLATE application/x-font-opentype
AddOutputFilterByType DEFLATE application/x-font-otf
AddOutputFilterByType DEFLATE application/x-font-truetype
AddOutputFilterByType DEFLATE application/x-font-ttf
AddOutputFilterByType DEFLATE application/x-font-woff
AddOutputFilterByType DEFLATE application/x-javascript
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE font/opentype
AddOutputFilterByType DEFLATE font/otf
AddOutputFilterByType DEFLATE font/ttf
AddOutputFilterByType DEFLATE font/woff
AddOutputFilterByType DEFLATE image/svg+xml
AddOutputFilterByType DEFLATE image/x-icon
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/javascript
AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/xml
# Remove browser bugs (only needed for really old browsers)
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4\.0[678] no-gzip
BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
Header append Vary User-Agent
# END WP-Optimize Gzip compression
Moin moin,
hast du denn in den Einstellungen unter „Allgemein“ die beiden Adressen auf https geändert?
In der htaccess sehe ich zudem keine Weiterleitung…
Hallo,
vielen Dank für die vielen Infos, einiges war für mich noch sehr hilfreich 🙂
Lg
Super Veranschaulichung, wie man die wp-config zusätzlich sichern kann. Und auch sollte! 🙂
Ich finde die Sicherheit bei WordPress ist enorm wichtig geworden. Gerade weil WordPress immer beliebter wird, nicht nur bei Blogs. Es wird also auch für Angreifer beliebter 😉
Super Artikel, in Kombination mit einer Firewall und guten Dateirechten kann man seine Seite relativ sicher machen. Aber leider werden immer wieder Wege gefunden um Schaden anzurichten.
Was man noch erwähnen könte:
Ich benutze für alternative Fehlerseiten folgendes in der htaccess:
ErrorDocument 404 /fehlerseite.html
LG, Karin
Moin Karin,
das ist natürlich auch nützlich, allerdings muss man hierfür in der Lage sein, eine eigene HTML Seite zu erstellen 🙂
Grüße
Jonas