Je nach Dateiberechtigung, ändert WordPress eigenständig die .htaccess Datei, welche sich im Hauptverzeichnis eurer WordPress-Installation befindet. Dies geschieht immer dann, wenn WordPress selbiges als notwendig erachtet.
Ändert ihr zum Beispiel die Permalinks, ändert sich auch der Code innerhalb der .htaccess und installiert ihr ein Caching Plugin, fügt auch dies unter Umständen entsprechenden Code hinzu. Für sich genommen, ist das praktisch und gar nicht so verkehrt. Betrachtet man dieses Verhalten allerdings im Detail, wird deutlich, dass das automatische Verändern der .htaccess eine Sicherheitslücke sein kann, die unerwünschte Folgen nach sich ziehen könnte.
https://wordpress.org/support/article/htaccess/
In diesem Artikel möchte ich euch daher aufzeigen, wie ihr WordPress daran hindert, die .htaccess einfach zu beschreiben und zu verändern. Wie immer, versuche ich dabei einen möglichst einfachen Weg zu finden, den jeder Anfänger sofort versteht und umsetzen kann.
Was WordPress automatisch einfügt
Grob gesagt, fügt WordPress vor allem die sogenannten Permalink Rules hinzu. Das sind Regeln, die darüber entscheiden, wie Permalinks dargestellt werden. Permalinks sind die sprechenden URL’s, deren Muster ihr in den Einstellungen festlegen könnt.
Speichert ihr neue Permalink-Regeln ab, fügt WordPress dieses in der .htaccess hinzu. Dies ist notwendig, da selbige sonst gar nicht erst funktionieren würden. WordPress legt dazu immer einen Block innerhalb der .htaccess an, der entsprechend kommentiert wird und ungefähr so aussieht:
# BEGIN WordPress Permalink-Regeln # END WordPress
Wird an dem Code etwas verändert, wird er gelöscht oder editiert, ersetzt WordPress ihn einfach, versetzt ihn also in seinen Ursprungszustand. Wer seine .htaccess außerdem minimiert und optimiert, scheitert hier stets daran, Leerzeichen oder Absätze zu entfernen, die WordPress hinzufügt.
Egal was ihr an dem Code, der sich zwischen den beiden Kommentaren befindet, also verändert , WordPress wird es ignorieren, den Code entfernen und neu einfügen. Genau das möchten wir nun aber verhindern.
Das Problem beim automatischen Einfügen
Nun komme ich zu dem Problem, welches durch diese Automatisierung seitens WordPress verursacht wird. Denn hin und wieder ist es notwendig, eigene Regeln einzufügen oder die Permalink-Regeln zu modifizieren. Das Dumme dabei ist nur, dass WordPress den eigenen Code immer wieder automatisch ersetzt.
Wer seine Regeln weiter oben einfügt, wird dagegen von WordPress ausgehebelt, weil das CMS seine Befehle immer wieder an das Ende der .htaccess setzt und somit das letzte Wort hat, wenn man so möchte. Was oben steht, wird also von dem, was weiter unten steht, übergangen.
Es gibt zwei mir bekannte Möglichkeiten, wie dieses Verhalten abgeschaltet werden kann, sodass die .htaccess nicht einfach überschrieben wird, wenn WordPress das möchte. Beide Methoden habe ich unten für euch aufgelistet und kurz ein wenig erläutert.
Methode 1: Die .htaccess sperren
Die wohl einfachste Methode ist es, die .htaccess einfach über die Dateiberechtigungen zu sperren. Dafür wählt ihr auf eurem Server entsprechende Einstellungen. Die Datei muss 400, 440 oder 444 besitzen, um nicht überschrieben werden zu können. Probiert aus, was eurem Server zum Erfolg führt, denn hin und wieder gibt es da Unterschiede oder Probleme mit.
Mit dem entsprechenden Wert, verhindert ihr nun ganz einfach, dass die .htaccess fremdseitig bearbeitet werden kann. Das bedeutet übrigens auch, dass ihr von nun an selbst dafür sorgen müsst, dass die richtigen und funktionierenden Regeln enthalten sind bzw. Änderungen, die innerhalb von WordPress vorgenommen werden, von euch händisch hinzugefügt oder aktualisiert werden. Andernfalls wird euer Blog nicht korrekt weiterleiten und die URLs nicht funktionieren.
Methode 2: WordPress Snippet hinzufügen
Eine etwas simplere Methode, die sich auch im Admin von WordPress schnell und direkt einfügen lässt, ist das Hinzufügen eines entsprechenden Snippets in die functions.php, welches den Prozess der Erneuerung der Rewrite-Regeln außer Kraft setzt.
So ändert WordPress auch keine derartigen Regeln mehr, während andere Plugins weiterhin Zugriff auf die .htaccess haben und diese auch verändern können.
add_filter('flush_rewrite_rules_hard','__return_false');
Mehr Sicherheit, weniger Risiko
Am Ende hängt es davon ab, wie oft ihr eure .htaccess effektiv nutzt. Je nach Blog und Projekt, sind dort viele eigenen Regeln enthalten und es macht durchaus Sinn, auch die sogenannten Rewrite Rules anzupassen, die WordPress eigentlich automatisch erstellt. Wenn dies der Fall ist, muss das Überschreiben selbiger natürlich unter allen Umständen verhindert werden.
Fazit:
In diesem Tutorial habt ihr nun gelernt, wie und wo das effektiv geht. Persönlich finde ich es sinnvoll, die .htaccess auf dem Server als nur lesbar einzustellen, weil so auch nicht versehentlich Unfug eingefügt wird. Viele Plugins editieren und aktualisieren inzwischen sehr viel, was oft unerwünscht ist, weshalb alles Notwendige lieber händisch eingetragen wird. So kann die .htaccess gepflegt werden, ohne ständig nachschauen zu müssen, ob auch wirklich noch alle eigenen Einträge vorhanden sind.
Ob und wie ihr diese Lösung umsetzt, bleibt euch überlassen.
Wer sich nicht auskennt, sollte wie immer lieber einen Profi damit beauftragen, auch was das Thema Sicherheit angeht. Mich zum Beispiel.
Wer Hilfe benötigt, darf sich also jederzeit bei mir melden. Sehr gerne übernehme ich die Wartung, Sicherheit oder Pflege eures WordPress Blogs.