有可能在没有黑客核心的情况下修复代理问题背后的管理URL吗?

时间:2012-05-21 作者:Chuck

在a中previous question 我试图解决WordPress在可排序列标题中使用错误url的问题;在代理之后的管理中分页,唯一有效的解决方案是修改核心文件,特别是

在wp admin/includes/class wp list表格的第491行和第658行。php,替换此行

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

具有

if(!empty($_SERVER[\'HTTP_X_FORWARDED_HOST\'])) {
    $hostname = $_SERVER[\'HTTP_X_FORWARDED_HOST\'];
} else {
    $hostname = $_SERVER[\'HTTP_HOST\'];
}
$current_url = ( is_ssl() ? \'https://\' : \'http://\' ) . $hostname . $_SERVER[\'REQUEST_URI\'];
有人知道如何在不修改核心的情况下做到这一点吗?

3 个回复
最合适的回答,由SO网友:EAMann 整理而成

我在推特上提出了这个问题,并询问了其他一些核心开发人员的反馈。我的直觉是$current_url 可过滤或由可重写的函数生成。显然,这是错误的。

@markoheijnen:
@埃里克曼重置$_SERVER[\'HTTP_HOST\'] 听起来像是一个黑客的解决方案。同样的代码可以在wp配置中。php

‏@nacin:
@EricMann@markoheijnen将其置于wp配置中是正确的。处理反向代理情况不是WP的工作。

@EricMann@markoheijnen理想情况下,应该在加载WP(甚至PHP)之前正确设置它们。可选择wp config。

@markoheijnen:
@nacin@ericmann在这种情况下,服务器/代理配置错误。所以我可以理解为什么它应该在wp config中修复

从这种对流的声音来看,您有两种选择:

在事情发展到PHP/WP之前,重新配置代理以设置正确的主机值$_SERVER[\'HTTP_HOST\'] 在您的wp-config.php 文件


我想得更多,这里有一些实际的代码可以添加到wp-config.php 要进行设置(基于更改核心文件的黑客补丁):

if ( ! empty( $_SERVER[\'HTTP_X_FORWARDED_HOST\'] ) ) {
    $_SERVER[\'HTTP_HOST\'] = $_SERVER[\'HTTP_X_FORWARDED_HOST\'];
}
这应该设置为默认核心文件不需要任何修改即可正常运行。但是请注意,我不能测试这个,因为我没有任何类型的代理设置来验证它。。。因此,如果此代码无法解决您的问题,请返回报告,我们可以尝试其他方法。

SO网友:David

我也有同样的问题。我们使用Apache作为代理(定义了ProxyPass和ProxyPassReverse),只需向虚拟主机添加以下内容即可解决此问题:

添加到虚拟主机:

ProxyPreserveHost打开

SO网友:Tally

使用Apache httpd v2。4我使用以下命令在专用apache实例下操作/wp admin,不修改任何代码或添加wp config。php。

注意:为了通过过滤器,我不得不对示例进行过多的混淆。希望这些关键字足以让你开始。

RequestHeader设置主机yourdomainHeader编辑*位置^ yourdomain privatedomain

SetOutputFilter SedOutputSed“s#yourdomain/#/#g”

我的公共apache实例拒绝访问/wp admin。

结束

相关推荐