it-swarm.com.de

Wordpress Multisite-Zugriff

Ich habe Wordpress als Multisite eingerichtet und als Teil der Schritte eine Anleitung zum Aktualisieren und Ersetzen der .htaccess-Datei gegeben.

Wordpress wies mich an, den htaccess durch diesen zu ersetzen:

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

# add a trailing slash to /wp-admin
RewriteRule ^wp-admin$ wp-admin/ [R=301,L]

RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule ^(wp-(content|admin|includes).*) $1 [L]
RewriteRule ^(.*\.php)$ $1 [L]
RewriteRule . index.php [L]

Dies führte jedoch dazu, dass ein Fehler in einem Plugin auftrat.

Ich dachte, dass es nützlich sein könnte, aber könnte jemand helfen, einen Einblick zu geben, was jede dieser Zeilen tut?

Insbesondere diese Zeile:

RewriteRule ^(.*\.php)$ $1 [L]

Wenn ich diese Zeile entferne, funktioniert mein Plugin einwandfrei.

Danke im Voraus :)

2
Cody New

Ich habe nach Details gesucht, warum diese Zeile für eine Installation mit mehreren Standorten auch unter Verwendung von Unterdomänen vorgeschlagen wird. Ich frage mich tatsächlich, ob beide für eine Subdomain-Installation relevant sind:

RewriteRule ^(wp-(content|admin|includes).*) $1 [L]
RewriteRule ^(.*\.php)$ $1 [L]

Bei der Installation eines Unterverzeichnisses werden die Regeln leicht geändert, um den Namen des Unterverzeichnisses von der Anforderung zu entfernen, dass er ungefähr so ​​lautet:

RewriteRule  ^([_0-9a-zA-Z-]+/)?(wp-(content|admin|includes).*) $2 [L]
RewriteRule  ^([_0-9a-zA-Z-]+/)?(.*\.php)$ $2 [L]

In meinen Fehlerprotokollen wird eine Umleitungsschleife angezeigt, die durch die erste Version dieser Regeln verursacht wird, da der Ersetzungstext mit dem Originaltext identisch ist. Ich habe Beweise dafür gefunden, dass einige Versionen von mod_rewrite erkennen, dass der ursprüngliche und der neue Text identisch sind, und überspringe das erneute Einfügen des Ergebnisses. (Ich bin mir nicht sicher, welche der vielen Links ich zu diesem Zeitpunkt gelesen habe.)

Ich sehe keinen Wert darin, einen URI so umzuschreiben, dass er mit dem Original identisch ist, und so dazu führt, dass der Link erneut in die Rewrite-Engine eingefügt wird. Wenn die Regeln entfernt sind, erhalte ich die erwartete 404-Seite anstelle einer Umleitungsschleife, die mit einem 500-Serverfehler endet, wenn das Umleitungslimit überschritten wird.

Separater Hinweis, ich denke, dass die vorgeschlagene Unterverzeichnisversion auch defekt ist. Da für den Teil des Unterverzeichnisses ? verwendet wird, wird eine Eingabe-URL wie no-such-file.php durchlaufen. Das Abgleichen im Unterverzeichnis sollte keine Nullkopien zulassen, daher sollte die Regel wahrscheinlich lauten:

 RewriteRule  ^[_0-9a-zA-Z-]+/(wp-(content|admin|includes).*) $1 [L]
 RewriteRule  ^[_0-9a-zA-Z-]+/(.*\.php)$ $1 [L]

Eine ähnliche Schlussfolgerung finden Sie hier: https://wordpress.stackexchange.com/a/73185/27576

3
KenB

RewriteRule ^wp-admin$ wp-admin/ [R=301,L]
Weiterleitungen http: //IhreDomain.ext/wp-admin nach http: //IhreDomain.ext/wp-admin/

RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
Bedingte Logik: Überprüfen Sie, ob der angeforderte Dateiname nicht eine vorhandene Datei (-f) oder ein vorhandenes Verzeichnis (-d) ist.

RewriteRule ^(wp-(content|admin|includes).*) $1 [L]
Leiten Sie wp-content.ext, wp-admin.ext und wp-includes.ext in die Datei selbst um, unabhängig davon, ob diese Datei vorhanden ist oder nicht.

RewriteRule ^(.*\.php)$ $1 [L]
Leiten Sie eine .php-Datei in diese Datei um, unabhängig davon, ob die Datei vorhanden ist oder nicht.

RewriteRule . index.php [L]
Leite alles zu index.php um.

Grundsätzlich leitet der .htaccess jede angeforderte Datei zu dieser bestimmten Datei und jedes Verzeichnis zu index.php um.

Lesen Sie in der ausführlichen mod_rewrite-Dokumentation nach, wie die Rewrite-Engine funktioniert.

2
Mike Madern