我最近在Wordpress multisite上建立了第二个博客。Multisite上的主要博客是www.example.com
, 我两天前建立的第二个博客是www.example2.org
.
不幸的是www.example2.org
, WordPress重定向到https://www.example.com/wp-signup.php?new=
在同一台服务器上,我设置了相应的测试多站点,其中test.example.com
作为主要博客和test.example2.org
第二个博客。它正在毫无问题地工作。
多站点相关.htaccess
和wp-config.php
测试和实时多站点的设置都是相同的,所以这不会是问题所在。我还验证了我在live Multisite上www.example2.org
在中正确设置wp_blogs
表,并正确设置为https://www.example2.org
在siteurl
和home
的行wp_2_options
表(the_2_
与多站点上的博客ID相对应的部分)。
如果您能就为什么会发生这种重定向和/或如何解决它提出任何建议,我将不胜感激。我甚至不知道哪个文件正在发出重定向(我不认为wp-signup.php
) 因此,我无法查看相关代码来进一步调试它。
最合适的回答,由SO网友:Borislav Zlatanov 整理而成
经过数小时的调试和绝望,问题现在解决了。结果证明这是一件非常模糊的事情。
重定向由函数发出ms_load_current_site_and_network()
在…内/wp-includes/ms-load.php
. 它发出重定向是因为/wp-includes/ms-settings.php
无法设置域。它无法设置域的原因是$_SERVER[\'HTTP_HOST\']
未设置。
$_SERVER[\'HTTP_HOST\']
未设置与PHP设置有关auto_globals_jit. 它被设置为On,导致$_SERVER
未设置数组(如中所述this comment). 尽管$_SERVER[\'HTTP_HOST\']
其余的是在加载单个php文件时定义的phpinfo();
在其中,加载Wordpress的php文件时没有定义它们。这导致了重定向。
背景auto_globals_jit
在php中关闭。ini解决了这个问题。
奖金信息:
另外,由于某种形式的缓存(我无法确定或清除),问题变得更加复杂。所以我不得不依赖于我所看到的行为,这些行为只发生过一次,之后无法复制。例如,我创建了一个单独的php文件来检查$_SERVER[\'HTTP_HOST\']
已设置,但最初未设置。按照the comment, 我用过$_SERVER[\'HTTP_HOST\']
两次在php文件中,并立即看到它现在已设置。但是,当恢复更改并$_SERVER[\'HTTP_HOST\']
在php文件中只有一次,它仍然保持设置状态,这表明我看到了一个缓存响应。我修了一次就再也不能让它坏了。
在这里记录一下,以防有人遇到类似的行为。