Google Cloud App Engine PHP项目子目录访问404问题求助
解决Google Cloud App Engine PHP项目子目录404问题
嘿,我来帮你搞定这个子目录访问的404问题!核心原因是你当前的app.yaml配置没有正确处理子目录下的PHP动态脚本请求——你用了static_dir来处理路径,但这只适用于静态文件,PHP脚本需要让App Engine的PHP运行时来解析执行,而且规则要覆盖到所有子目录的情况。
修正后的app.yaml配置
直接替换你的handlers部分,以下是适配子目录PHP访问的完整配置:
runtime: php55 api_version: 1 handlers: # 匹配所有目录(包括子目录)下的PHP文件,交给PHP运行时处理 - url: /(.+\.php)$ script: \1 # 处理根目录默认访问,指向根目录的index.php - url: / script: index.php # 可选:如果forums目录有静态资源(如css/js/图片),添加这个规则确保能正常访问 - url: /forums/(.*\.(css|js|png|jpg|gif))$ static_files: forums/\1 upload: forums/(.*\.(css|js|png|jpg|gif))$
配置说明
- 第一个handler:用正则表达式
/(.+\.php)$匹配所有以.php结尾的URL(不管在哪个子目录),script: \1表示把请求路由到捕获到的对应PHP文件(比如/forums/whatever.php会指向项目里的forums/whatever.php文件)。 - 第二个handler:处理根目录的默认访问请求,直接指向根目录的
index.php。 - 第三个handler(可选):专门处理
forums目录下的静态资源,避免这些文件被当成PHP脚本处理,确保CSS、JS、图片等能正常加载。
额外注意事项
- 确认你的项目目录结构正确:主目录下确实存在
forums文件夹,且里面有whatever.php文件。 - 修改配置后,重新部署项目:执行
gcloud app deploy命令,确保新的配置生效。 - 如果还有其他子目录的PHP文件,第一个handler已经全覆盖了,不需要额外添加规则,除非有特殊的路由需求。
这样配置后,访问https://example.com/forums/whatever.php就不会再返回Nginx 404错误,而是正常执行对应的PHP脚本啦!
内容的提问来源于stack exchange,提问作者PLAINS
相关产品推荐
相关产品推荐

