WordPress 背后的反向代理管理问题

Ser*_*Sob 5 wordpress reverse-proxy

基本上正如标题所说,我在反向代理后面有一个 wp。假设域名是***,wordpress 是*******/blog 以下是允许其以这种方式工作的 wp-config.php 编辑:

define('.ADMIN_COOKIE_PATH.', '/blog');
define('.COOKIE_DOMAIN.', 'www.***.com');
define('.COOKIEPATH.', '/blog');
define('.SITECOOKIEPATH.', '.');


if(isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {
        $list = explode(',',$_SERVER['HTTP_X_FORWARDED_FOR']);
        $_SERVER['REMOTE_ADDR'] = $list[0];
  }
define('DOMAIN_CURRENT_SITE', 'https://www.***.com/blog');
define('WP_HOME','https://www.***.com/blog');
define('WP_SITEURL','https://www.***.com/blog');
$_SERVER['REMOTE_ADDR'] = 'https://www.***.com/blog';
$_SERVER['HTTP_HOST'] = 'www.***.com/blog';
$_SERVER[ 'SERVER_ADDR' ] = 'www.***.com/blog';


define('FORCE_SSL_ADMIN', true);
define('FORCE_SSL_LOGIN', true);
if ($_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https')
       $_SERVER['HTTPS']='on';

$_SERVER['REQUEST_URI'] = str_replace("https://www.***.com/wp-admin",
                                      "https://www.***.com/blog/wp-admin",
                                      $_SERVER['REQUEST_URI']);
Run Code Online (Sandbox Code Playgroud)

现在,一切都很完美,但是当我在管理面板中的某些地方时,比如说评论,如果我提交表单,WP 会转到 ********/wp-admin 而不是 ******** /blog/wp-admin 并崩溃至 404。

更新

尝试了 VHost 方法,将其添加到我的 httpd.conf 中

Listen 80 <VirtualHost *:80> 
  DocumentRoot /var/www/wp-admin 
  ServerName https://***/blog/wp-admin 

# Other directives here 
</VirtualHost> 
Run Code Online (Sandbox Code Playgroud)

但奇怪的是,每当我在此之后访问 /blog 时都会出现重定向循环

我该如何解决?

小智 6

$_SERVER['REQUEST_URI'] 不包含完整的 URL,因此您应该仅替换 /wp-admin/。鉴于你的例子:

 $_SERVER['REQUEST_URI'] = str_replace("/wp-admin/", "/blog/wp-admin/",
                                            $_SERVER['REQUEST_URI']);
Run Code Online (Sandbox Code Playgroud)