web-dev-qa-db-fra.com

Wordpress Multisite redirigeant vers wp-signup.php

J'ai récemment mis en place un deuxième blog sur mon multisite Wordpress. Le blog principal sur le multisite est www.example.com et le deuxième blog que j'ai créé il y a deux jours est www.example2.org.

Malheureusement, en allant à www.example2.org, WordPress redirige vers https://www.example.com/wp-signup.php?new=

Sur le même serveur, j'ai configuré un multisite de test correspondant, test.example.com étant le blog principal et test.example2.org le deuxième blog. Cela fonctionne sans problème.

Les paramètres .htaccess et wp-config.php relatifs aux multisites sont les mêmes pour le test et le multisite réel, ce qui ne poserait pas de problème. J'ai également vérifié que, sur le multisite réel, j'ai www.example2.org correctement défini dans la table wp_blogs et qu'il est correctement défini en tant que https://www.example2.org sur les lignes siteurl et home de la table wp_2_options (la partie _2_ correspondant à l'ID de blog sur le multisite ).

J'apprécierais toutes les suggestions sur la raison pour laquelle cette redirection se produit et/ou sur la façon de la résoudre. Je ne sais même pas quel fichier émet la redirection (je ne pense pas que ce soit wp-signup.php), donc je ne peux pas consulter le code approprié pour le déboguer plus avant.

4

Après de nombreuses heures de débogage et de désespoir, le problème est maintenant résolu. Cela s'est avéré être une chose très obscure.

La redirection est émise par la fonction ms_load_current_site_and_network() dans /wp-includes/ms-load.php. La redirection était en cours car /wp-includes/ms-settings.php n'était pas en mesure de définir un domaine. La raison pour laquelle il n'a pas été possible de définir un domaine est parce que $_SERVER['HTTP_Host'] n'a pas été défini.

$_SERVER['HTTP_Host'] non défini était en rapport avec PHP setting auto_globals_jit . Il a été défini sur On, ce qui a pour conséquence que le tableau $_SERVER n'est pas défini (comme expliqué dans this comment ). Même si $_SERVER['HTTP_Host'] et le reste ont été définis lors du chargement d'un seul fichier php contenant phpinfo();, ils n'étaient pas définis lors du chargement des fichiers php de Wordpress. Et cela a conduit à la redirection.

La définition de auto_globals_jit sur Off dans php.ini a résolu le problème.

Informations sur le bonus:

Le problème a en outre été compliqué par une certaine forme de mise en cache (que je ne pouvais ni identifier ni effacer). J'ai donc dû me fier à un comportement qui, à mon avis, ne se produit qu'une fois et ne peut plus se reproduire par la suite. Par exemple, j'ai créé un fichier php distinct pour vérifier si $_SERVER['HTTP_Host'] est défini - ce qui n'était pas le cas initialement. Suite à la suggestion de le commentaire , j’ai utilisé $_SERVER['HTTP_Host'] deux fois dans le fichier php - et j’ai immédiatement vu qu’il était réglé. Cependant, lorsqu’il a annulé la modification et que $_SERVER['HTTP_Host'] n’a été inséré qu’une seule fois dans le fichier php, il n’a toujours pas été paramétré, ce qui suggère que je voyais une réponse mise en cache. Je ne pourrais pas le faire casser à nouveau après l'avoir réparé une fois.

Il suffit de documenter ceci ici au cas où quelqu'un rencontrerait un comportement similaire.

2
Borislav Zlatanov