You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

$_SERVER['REQUEST_URI']返回父目录而非子目录的技术问题求助

解决WP Engine子目录反向代理下$_SERVER['REQUEST_URI']路径不正确的问题

这个问题在反向代理映射的场景里很常见——当客户把company.com/sub-company/指向WP Engine的演示站点时,$_SERVER['REQUEST_URI']拿到的是WP Engine服务器实际接收的路径(也就是去掉了/sub-company/前缀的部分),而不是用户访问的完整路径。这是因为反向代理服务器只会把子目录后面的内容转发给WP Engine站点,导致原生的服务器变量无法捕获到原始请求的完整路径信息。

下面给你几个实用的解决方案:

1. 利用代理转发头重建完整路径

WP Engine处理反向代理请求时,会把原始请求的完整URI和域名分别存在HTTP_X_FORWARDED_URI和HTTP_X_FORWARDED_HOST这两个服务器变量里。你可以修改重定向函数,优先使用这些变量:

// 优先取代理转发的完整URI,没有的话再 fallback 到默认的REQUEST_URI
$referrer = !empty($_SERVER['HTTP_X_FORWARDED_URI']) ? $_SERVER['HTTP_X_FORWARDED_URI'] : $_SERVER['REQUEST_URI'];

// 如果需要拼接完整的URL(包含域名),可以这样处理
$protocol = isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on' ? 'https' : 'http';
$full_referrer = $protocol . '://' . $_SERVER['HTTP_X_FORWARDED_HOST'] . $referrer;

这样就能获取到用户实际访问的/sub-company/xxx路径,而不是WP Engine内部接收到的/xxx路径。

2. 强制WordPress使用正确的站点URL

让WordPress明确知道自己的实际访问地址是http://company.com/sub-company/,这样所有内置的路径生成函数都会基于这个地址工作,从根源上避免路径混乱。

  • 推荐直接在wp-config.php里添加配置(不受后台设置变动影响):
define('WP_HOME', 'http://company.com/sub-company/');
define('WP_SITEURL', 'http://company.com/sub-company/');
  • 也可以登录WordPress后台,在「设置-常规」中把「站点地址(URL)」和「WordPress地址(URL)」都设置为http://company.com/sub-company/

修改完成后记得清除WP Engine的缓存(在WP Engine控制面板操作),缓存可能会保留旧的路径配置,导致修改不生效。

3. 用WordPress内置函数替代原生$_SERVER变量

不要直接依赖$_SERVER这类原生变量,WordPress提供了很多适配站点配置的内置函数,即使在反向代理场景下也能准确获取路径:

// 获取当前页面的完整URL
global $wp;
$current_full_url = home_url(add_query_arg(array(), $wp->request));

// 仅获取包含/sub-company/前缀的路径部分
$current_path = home_url($wp->request);

比如用户访问http://company.com/sub-company/about,$current_path会返回http://company.com/sub-company/about,完全符合你的需求。

额外注意事项

  • 确认你已经在WP Engine控制面板中添加了company.com作为站点的自定义域名,且配置无误
  • 测试前可以先输出var_dump($_SERVER)查看HTTP_X_FORWARDED_URI和HTTP_X_FORWARDED_HOST是否存在,确保代理服务器正确传递了这些头信息
  • 如果是多站点网络,还要检查网络设置里的「站点域名」和「路径」配置是否正确

内容的提问来源于stack exchange,提问作者user433351

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 11:42:02