it-swarm.com.de

WordPress Multisite .htaccess verursacht 500 Fehler auf alten * .php URLs

Ich habe eine neue Multisite-WordPress-Installation eingerichtet. Alles funktioniert einwandfrei, außer dass Google noch alte URLs crawlt (mit der Erweiterung .php).

Diese URLs zeigen nun einen Fehler von 500 an, der anscheinend auf ein Htaccess-Problem zurückzuführen ist - d. H., Diese URLs treffen nicht auf WordPress. (Ich verwende derzeit den standardmäßigen WordPress-Htaccess-Code für mehrere Standorte.)

RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]

# add a trailing slash to /wp-admin
RewriteRule ^([_0-9a-zA-Z-]+/)?wp-admin$ $1wp-admin/ [R=301,L]

RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(wp-(content|admin|includes).*) $2 [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(.*\.php)$ $2 [L]
RewriteRule . index.php [L]

Ich muss der .htaccess-Datei der Site einen neuen Schreibzugriff hinzufügen, der die .php-Erweiterung für die Dateien entfernt, über die sie verfügen und die nicht auf dem Server gefunden werden (d. H. WordPress-Kerndateien wie wp-login.php usw. ausschließen).

Ich habe diesen Code verwendet, um die .php-Erweiterung zu entfernen

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ / [L,QSA]
</IfModule>

Dies behebt den 500-Fehler und ermöglicht mir das Einrichten von Weiterleitungen für die alte Site unter Verwendung des wp-Weiterleitungs-Plugins, wie ich es ursprünglich beabsichtigt hatte, aber es verursacht einige Probleme beim Laden von Stilen und Bildern auf einigen der Unterordner-Multisites muss verbessert werden!

1
benedict_w

Probieren Sie oben in Ihrer .htaccess-Datei Folgendes aus:

Options -MultiViews

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule (.+)\.php$ /$1 [R=302,L]

Mit der obigen Option werden alle URLs umgeleitet, die mit .php enden und keiner physischen Datei zugeordnet sind, und die .php -Erweiterung in der Umleitung wird entfernt.

Obwohl diese Anforderungen (mit einer .php-Erweiterung) in erster Linie keinen 500-Fehler auslösen sollten? Wenn die obige Umleitung dieses Problem behebt, scheint dies darauf hinzudeuten, dass WordPress selbst den 500-Fehler auslöst.


Ich habe diesen Code verwendet, um die .php-Erweiterung zu entfernen

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ / [L,QSA]
</IfModule>

Dies behebt den 500er Fehler ...

Dieser Code verursacht mit größerer Wahrscheinlichkeit einen 500-Fehler, als ihn zu beheben. Dies "entfernt nicht die .php-Erweiterung" - es leitet einfach alle URLs zum Dokumentenstamm weiter, wodurch mod_dir die Anforderung an index.php weiterleitet.

0
MrWhite