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

Node请求PHP接口触发Too Many Redirects问题排查求助

问题分析与解决方案

从你的描述和日志对比来看,核心问题很明确:Node应用发送的请求实际上并没有到达PHP的/notifica端点,而是被解析成了根路径/,这才触发了无限重定向循环。Postman和浏览器能正常工作,是因为它们的请求路径被Apache正确识别并路由到了目标控制器。

为什么会出现这种差异?

我梳理了几个最可能的原因:

  1. Node代理/请求的路径配置错误
    如果你用Node作为代理转发请求(比如用http-proxy-middleware这类库),很可能是pathRewrite配置把路径写错了。比如不小心把/notifica重写为/,导致PHP收到的是根路径请求:

    // 错误配置:把/notifica重写为/
    app.use('/notifica', proxy({
      target: 'http://your-php-app',
      pathRewrite: { '^/notifica': '/' } // 这会把请求路径改成/
    }));
    

    这种情况下,PHP的index.php如果对根路径/有重定向到/notifica的逻辑,就会形成/→/notifica→/→...的循环,最终触发Too Many Redirects错误。

  2. 请求URL拼写错误
    如果你直接用axios/fetch等库发送请求,可能是代码里的URL写错了——比如把http://your-php-app/notifica写成了http://your-php-app,导致每次请求都指向根路径。

  3. 缺失关键请求头(比如Host)
    Apache的虚拟主机配置通常依赖Host头来路由到正确的站点。如果Node发送请求时没有设置正确的Host头,Apache可能会把请求路由到默认站点,而默认站点的根路径处理逻辑会触发重定向。Postman和浏览器会自动带上当前域名的Host头,所以不会有这个问题。

怎么解决?

针对上面的原因,你可以按以下步骤排查:

  • 检查代理/请求的路径配置
    如果用代理库,确保pathRewrite没有错误修改路径。正确的配置应该保持原路径不变,或者按需映射:

    // 正确配置:保持/notifica路径不变
    app.use('/notifica', proxy({
      target: 'http://your-php-app',
      changeOrigin: true, // 自动设置目标服务器的Host头
    }));
    

    如果用axios/fetch,直接打印请求的URL确认是否正确:

    const url = 'http://your-php-app/notifica';
    console.log('Sending request to:', url); // 确认路径是/notifica而不是/
    axios.get(url);
    
  • 添加正确的Host请求头
    手动指定Host头,确保Apache能正确路由到你的PHP站点:

    axios.get('http://your-php-app/notifica', {
      headers: {
        'Host': 'your-php-app-domain.com' // 替换为PHP服务器的实际域名/Host
      }
    });
    
  • 验证PHP根路径的处理逻辑
    检查index.php中是否有对/的重定向代码,比如:

    if ($_SERVER['REQUEST_URI'] === '/') {
        header('Location: /notifica');
        exit;
    }
    

    如果有,确认Node请求的确实是/notifica而不是/——毕竟如果请求的是根路径,这种逻辑必然会触发重定向循环。

  • 检查Apache虚拟主机配置
    确保你的虚拟主机配置中,ServerName或ServerAlias与Node请求的Host头匹配,避免因路由到错误站点导致的路径解析问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 07:02:55