Das Problem
Unter der Plesk lässt sich dank dem WordPress Toolkit recht schnell eine neue WordPress Instanz installieren. Dann aktiviert man noch schnell nginx, um die Ladezeiten zu verbessern und plötzlich sind alle Unterseiten der WordPress-Website nicht aufrufbar. Außer auf der Startseite erscheint ein „404 Not Found„.
Die Ursache
Wenn PHP als FPM application served by nginx läuft, dann ist Apache nicht an der Verarbeitung von Websites beteiligt. Infolgedessen wird die .htaccess-Datei (die von WordPress zum Umschreiben von Seiten-URLs verwendet wird) von nginx verarbeitet, das die in der .htaccess-Datei definierten Regeln jedoch nicht unterstützt.
Die Lösungsoptionen
1. Zurück zu Apache wechseln
Die einfachste Lösung wäre die Website nicht mehr durch nginx ausliefern zu lassen. Dazu in den Hosting-Einstellungen einfach zu FPM application served by Apache zurückwechseln und ggf. in den Apache & nginx Einstellungen noch gesetzte Häkchen entfernen. Apache kann die in der .htaccess-Datei gesetzten Regeln wieder interpretieren und liefert die Website korrekt aus. Jedoch verzichtet man bei dieser Lösung auf die Vorteile von nginx.
2. Für eine Website / WordPress-Instanz
Bitte beachte, dass dies nur als Plesk-Administrator möglich ist. Frage also deinen Hoster / System-Administrator, falls das entsprechende Feld bei dir nicht erscheint und dir somit die Berechtigungen fehlen. Ein guter Hoster sollte diesen Inhalt ohne großes Nachfragen schnell einfügen können.
Schritt 1
Gehe dazu in Plesk in der entsprechenden Domain auf die Apache & nginx Einstellungen:
Schritt 2
Füge in das Textfeld Zusätzliche nginx-Anweisungen (ganz unten) folgenden Inhalt ein:
Die Anweisungen zum Kopieren:
https://gist.github.com/PS-WebAgentur/d260e813c27f1cdb4b718fc27cbe00cc
Schritt 3
Drücke abschließend auf den Button OK oder Übernehmen, um die Anweisungen zu speichern und zu aktivieren.
Nun sollte deine WordPress-Website mit allen Unterseiten wieder korrekt aufrufbar sein.
Hinweis
Wenn sich deine WordPress-Installation in einem Unterverzeichnis befindet (zum Beispiel „httpdocs / sub-dir“) oder es sich um ein WordPress Multisite Netzwerk handelt, welches auf Unterverzeichnissen basiert, fügen das Verzeichnis /sub-dir/ vor dem /index.php?$1 hinzu, damit es wie folgt aussieht:
https://gist.github.com/PS-WebAgentur/122b169f5ef97060b4afeaf35eabfe91
Wichtig: Bei WordPress Multisite Netzwerken, welche auf Unterverzeichnissen basieren, muss diese Regel für jedes Unterverzeichnis hinzugefügt werden.
3. Serverweite Umsetzung für alle alten & neuen Websites
Da es hier für verschiedenste Versionen unterschiedliche Vorgehensweisen gibt und sich diese kurze Anleitung lediglich an Endbenutzer richten soll und damit nicht an Hoster oder Server-Betreiber, möchte ich hiermit auf das Plesk Help Center verweisen.
Autor dieses Beitrags
Philipp Sobotta | PS-WebAgentur
Seit 2011 erstellt er professionelle Websites für private und geschäftliche Zwecke. Er ist WordPress-Benutzer der ersten Stunde, Verfechter von Green IT, papierlosem Office und performantem Hosting zu fairen Preisen.
Recht vielen Dank für den wertvollen Beitrag! Toller Tipp.