web-dev-qa-db-ger.com

Wordpress Multisite Weiterleitung zu wp-signup.php

Ich habe kürzlich ein zweites Blog auf meiner Wordpress-Multisite eingerichtet. Das primäre Blog auf der Multisite ist www.example.com und das zweite Blog, das ich vor zwei Tagen eingerichtet habe, ist www.example2.org.

Leider leitet WordPress beim Aufrufen von www.example2.org zu https://www.example.com/wp-signup.php?new= weiter

Auf demselben Server habe ich eine entsprechende Test-Multisite eingerichtet, wobei test.example.com das primäre Blog und test.example2.org das zweite Blog ist. Es funktioniert ohne Probleme.

Die Multisite-bezogenen Einstellungen für .htaccess und wp-config.php sind sowohl für den Test als auch für den Live-Multisite gleich, sodass dies nicht das Problem ist. Ich habe außerdem überprüft, ob auf der Live-Multisite www.example2.org korrekt in der wp_blogs-Tabelle und in den Zeilen siteurl und home der https://www.example2.org-Tabelle (der wp_2_options-Teil, der der Blog-ID auf der Multisite entspricht) als _2_ eingestellt ist ).

Ich würde mich über Vorschläge freuen, warum diese Weiterleitung stattfindet und/oder wie sie gelöst werden kann. Ich weiß nicht einmal, welche Datei die Umleitung ausgibt (ich glaube nicht, dass es sich um wp-signup.php handelt), daher kann ich den relevanten Code nicht anzeigen, um ihn weiter zu debuggen.

4

Nach vielen Stunden des Debuggens und der Verzweiflung ist das Problem nun gelöst. Es stellte sich heraus, dass es eine sehr dunkle Sache war.

Die Umleitung wird von der Funktion ms_load_current_site_and_network() innerhalb von /wp-includes/ms-load.php ausgegeben. Die Umleitung wurde ausgegeben, da /wp-includes/ms-settings.php keine Domäne festlegen konnte. Der Grund dafür, dass keine Domain festgelegt werden konnte, ist, dass $_SERVER['HTTP_Host'] nicht festgelegt wurde.

$_SERVER['HTTP_Host'], der nicht gesetzt wurde, hatte mit der Einstellung PHP auto_globals_jit zu tun. Es wurde auf On gesetzt, was dazu führte, dass das $_SERVER-Array nicht gesetzt wurde (wie in this comment erklärt). Obwohl $_SERVER['HTTP_Host'] und der Rest beim Laden einer einzelnen PHP-Datei mit phpinfo(); definiert wurden, wurden sie beim Laden der PHP-Dateien von Wordpress nicht definiert. Und das führte zur Umleitung.

Das Setzen von auto_globals_jit auf Off in der php.ini hat das Problem behoben.

Bonus Info:

Das Problem wurde zusätzlich durch irgendeine Form von Caching erschwert (die ich nicht genau bestimmen oder klären konnte). Ich musste mich also auf das Verhalten verlassen, das ich nur einmal gesehen habe und konnte mich danach nicht mehr replizieren. Zum Beispiel habe ich eine separate PHP-Datei erstellt, um zu überprüfen, ob $_SERVER['HTTP_Host'] gesetzt ist - und anfangs nicht. Dem Vorschlag von dem Kommentar folgend, habe ich $_SERVER['HTTP_Host'] zweimal in der PHP-Datei verwendet - und sofort gesehen, dass es jetzt gesetzt ist. Wenn die Änderung jedoch rückgängig gemacht wurde und $_SERVER['HTTP_Host'] nur einmal in der PHP-Datei vorhanden war, blieb er weiterhin gesetzt - was darauf hindeutet, dass eine zwischengespeicherte Antwort angezeigt wurde. Ich kann es nicht wieder zum Brechen bringen, nachdem ich es einmal repariert habe.

Dokumentieren Sie dies hier nur für den Fall, dass jemand auf ein ähnliches Verhalten stößt.

2