多服务器环境导致WordPress出现问题

时间:2015-03-13 作者:Adam Walter

我最近把我开发的WordPress网站交给了一个IT团队,负责我客户的web环境。他们不是WordPress的人,我也无法接触环境。由于他们使用的环境,目前存在一些问题,我将对此进行解释:

服务器A(Web服务器)域名(http://example.com) 点击此处,进行重写,并将流量路由到服务器B或C。运行电子商务CMS的服务器B(App Server)。到的流量http://example.com/shop 在这里路由运行WordPress站点的服务器C(WordPress服务器)。到的流量http://example.com/blog 在此处布线,下面是一些重要注意事项:

WP中的WordPress地址和站点地址设置为http://example.com/blog.http://example.com/blogfrontend 尽管有这些事实,但是backend 仍在使用服务器IP地址URL的WordPress的。例如,帖子/页面列表中的所有分页控件。

此外,后端中的任何形式都会被破坏。例如,如果我尝试删除一个插件,那么处理delete按钮的表单将具有POST 映射到的操作/wp-admin/plugins.php?action=delete-selected... 这当然意味着它忽略了/blog/ 站点地址中的子目录,然后是404s。我认为这个问题是服务器a试图重写该请求的结果。

还有其他问题,但它们都归结为WordPress似乎不知道它的URL是什么。我的观点是,由于服务器C的设置,它导致在PHP执行以下操作的地方使用错误的URL:

$current_url = set_url_scheme( \'http://\' . $_SERVER[\'HTTP_HOST\'] . $_SERVER[\'REQUEST_URI\'] );

HTTP_HOST 使用主机标头,if one is present, 否则,它必须从服务器获取该值,该值当前是IP地址。

My question is... 我们如何在WordPress中调整此设置并修复这些URL问题?

1 个回复
SO网友:Tom Oehlert

这就是解决方案!

http://www.iconwebsolutions.info/wordpress-admin-prevnext-page-links-still-pointing-to-the-old-site/

打开文件wp admin/includes/class wp list表。php

搜索“function pagination”,您将在下面的代码行中找到设置当前url的代码$current\\u url=set\\u url\\u scheme(\'http://\'。$\\u SERVER[\'http\\u HOST\']。$\\u SERVER[\'REQUEST\\u URI\']);

$current\\u url是使用$\\u SERVER[\'HTTP\\u HOST\']构建的,它对在代理下运行的服务器不起作用,因此请更改此url,或基本上使用服务器url对其进行硬编码,如下所示:

$current\\u url=set\\u url\\u scheme(\'http://serverurl.com’ . $_服务器[\'REQUEST\\u URI\']);

结束