Fehlersymptome bei falschen URL-rewrite-Rules unter WordPress 5


Thema: Ubuntu – MariaDB – WordPress – Apache – CleanBlogg Theme.


Wenn man WordPress 5 mit dem Gutenberg-Editor installiert oder ein Update macht, kann es passieren dass:

  • publizierte Blogeinträge nur per ID und server.tld/?p=123 aufgerufen werden können und sprechende URLs mit eine Serverfehler und keiner WordPress-404-Seite ausgegeben werden:

Server 404

  • speichern von geänderten oder von neu angelegte Blogeinträgen nicht klappt, Gutenberg zeigt diesen Fehler an:

Speichern schlägt fehl

Treten beide Fehler auf, so liegt ein Problem bei den rewrite-Rules am Server vor. Entweder ist das rewrite-Modul gar nicht aktiviert (erfordert Root-Zugriff), oder die rewrite-Rules sind falsch angelegt. Mögliche Fehlerquellen:

Falsche rewrite-Rules: die Regeln schauen auch in WordPress 5 so aus:

RewriteEngine On
RewriteBase /
RewriteRule ^index.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

Liegen sie in einer .htaccess-Datei so muss diese erstens im Basis-Verzeichnis der Worpress-Instanz liegen und zweitens muss das Setzen von individuellen Verzeichnis-Regeln mittels .htaccess überhaupt am Server erlaubt sein. Diese Datei braucht dann folgenden Inhalt, so spielt man sie auch anfangs mit dem WordPress-5-Package ein.

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

Gehen .htaccess-Dateien nicht oder will man diese relevante Information lieber bei der Definition des Servers haben, so geht dies auch dort. Dabei muss man noch extra das richtige Verzeichnis angeben. Hier die volle Version der Definition:

<VirtualHost *:80>
ServerName www.server.tld
ServerAlias server.tld
DocumentRoot /path/to/wordpress/directory/
ServerAdmin email@server.tld
AddDefaultCharset utf-8
ErrorLog /path/to/server.tld-error.log
CustomLog /path/to/server.tld-access.log combined
<IfModule mod_rewrite.c>
<Directory /path/to/wordpress/directory>
RewriteEngine On
RewriteBase /
RewriteRule ^index.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</Directory>
</IfModule>
</VirtualHost>

Nach allen Änderungen muss der Webserver neu gestartet werden!

No Comments

Leave a Comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.