Wrong wp-admin URL

时间:2017-06-12 作者:Victor Wong

我刚安装了一个WordPress站点,并在一个反向代理后面配置了该站点的URL-http://example.com/hello

问题

我可以访问admin dashboard页面,但由于链接变为http://example.com/wp-admin 而不是http://example.com/hello/wp-admin. 我怎样才能摆脱这种奇怪的行为?

可能有帮助的详细信息http://example.com/hello, 我甚至检查了数据库表wp_options.http://example.com/hello/wp-admin..htaccess 也一样,但运气不好。

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /hello
RewriteRule ^index\\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /hello/index.php [L]
</IfModule>
# END WordPress

3 个回复
SO网友:Victor Wong

最终,我找到了这种奇怪行为的原因。

这是由于wp_admin_canonical_url() (https://developer.wordpress.org/reference/functions/wp_admin_canonical_url/)

URL由这段代码决定

$_SERVER[\'HTTP_HOST\'] . $_SERVER[\'REQUEST_URI\']
后者返回的地方wp-admin 而不是hello/wp-admin.

通过操纵中的值$_SERVER[\'REQUEST_URI\'], 我可以在管理仪表板中成功获得正确的行为。但我仍然希望有一个不涉及WordPress代码的优雅解决方案。

SO网友:mrben522

add_filter(\'set_url_scheme\', \'hacky_uri_fix\', 10, 2);
function hacky_uri_fix($url, $scheme) {
    if ( $url === {{BAD ADMIN URL}} ) {
        $url = {{CORRECT ADMIN URL}}
    }
    return $url
}
如果可以的话,只需用正确的URL替换您试图避免的错误URL即可。我确信有更好的解决方案,但我不太熟悉子文件夹的安装,这应该可以在不涉及核心代码的情况下工作。

SO网友:Chad

维克托是百分之百的人,所以请拯救下一个人(甚至是我自己)继续挖掘:

函数wp\\u admin\\u canonical\\u url位于中/wp管理/包括/杂项。php文件更改

$\\u服务器[\'HTTP\\U主机\']$_服务器[\'REQUEST\\u URI\']

$_SERVER[\'HTTP_HOST\'] . \'/news/. $_SERVER[\'REQUEST_URI\']
Where/news可以是wp admin文件夹前面的任何路径。

结束