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

GCP App Engine部署PHP应用重定向过多无法访问src目录资源

问题根因

你当前碰到的无限重定向问题,核心是两个错误叠加导致:

  1. 自建根目录index.php做跳转的方案本身存在逻辑缺陷,在App Engine的请求转发链路下会形成循环
  2. app.yaml没有正确配置路径映射规则,试图靠PHP跳转代替平台原生路由能力
    本地环境、GCP Compute Engine环境运行正常,是因为这两个场景用的是自建Web服务器(Apache/Nginx)的默认目录索引逻辑,和App Engine的路由匹配逻辑完全不同。
正确配置步骤
  1. 直接删除项目根目录下你自己创建的、用于跳转的index.php文件,从根源消除重定向循环的触发点,完全不需要用PHP代码做路径跳转。
  2. 在项目根目录创建/修改app.yaml,直接通过平台原生路由规则把所有请求映射到src目录下的对应资源,配置示例如下:
# 请替换为你项目实际使用的PHP版本,支持php74、php81、php82等版本
runtime: php82

handlers:
  # 站点根路径直接映射到src目录下的主入口文件,无额外HTTP跳转
  - url: /
    script: src/index.php
    secure: always

  # 匹配所有PHP脚本请求,自动映射到src目录下对应路径的PHP文件
  - url: /(.+\.php)$
    script: src/\1
    secure: always

  # 匹配所有静态资源,直接读取src目录下对应静态文件返回
  - url: /(.+\.(png|jpg|jpeg|gif|ico|css|js|svg|woff|woff2|ttf))$
    static_files: src/\1
    upload: src/.+\.(png|jpg|jpeg|gif|ico|css|js|svg|woff|woff2|ttf)$
    expiration: "1d"
    secure: always

  # 兜底路由,适配框架伪静态需求,所有未匹配的请求统一走主入口文件
  - url: /.*
    script: src/index.php
    secure: always
配置验证说明
  • 上述配置不需要修改src目录下的任何原有代码,部署后访问根路径会直接执行src/index.php,不会产生任何重定向
  • login.php、logout.php等PHP文件会自动映射,访问/login.php实际执行的是src/login.php
  • icons.png等静态资源会自动被静态文件规则匹配,直接返回src目录下的对应资源,不会经过PHP解析,性能更好
  • 如果你的项目不需要强制HTTPS访问,可以删掉所有规则下的secure: always配置项
  • 配置中的正则捕获组会自动适配src下的多级目录,不需要为子目录额外添加路由规则

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.08 16:15:17