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

Google App Engine部署后/api路由返回Page not found如何解决

问题原因及解决方法

1. app.yaml 路由规则配置错误

你当前的handlers配置里url: /(.*)规则会匹配所有请求路径,包括/api,GAE会将所有匹配到的请求优先转发到静态文件服务,根本不会把请求交给你的Go后端服务处理,自然返回404。
你需要调整handler顺序,先配置动态路由的转发规则,再配置静态文件规则:

runtime: go116

handlers:
# 先匹配/api开头的动态请求,转发到Go服务
- url: /api.*
  script: auto
# 匹配根路径
- url: /
  static_files: www/index.html
  upload: www/index.html
# 最后匹配其他静态资源
- url: /(.*)
  static_files: www/\1
  upload: www/(.*)

2. 服务监听地址配置错误

你代码里硬写了router.Run("localhost:8080"),GAE运行时会自动分配端口,且要求服务监听0.0.0.0地址而非localhost,否则外部请求无法到达你的Go服务。你需要修改启动逻辑:

// 引入os包
import "os"

// 替换原有router.Run那一行代码
port := os.Getenv("PORT")
if port == "" {
  port = "8080"
}
router.Run("0.0.0.0:" + port)

3. Go版本兼容问题

你提到App Engine最高支持Go 1.15,而你配置的runtime是go116,本地用的是1.17,你需要将runtime改为对应支持的版本如go115,同时本地编译的时候用对应版本的Go编译,避免语法兼容问题。
修改完成后重新执行gcloud app deploy部署即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 19:15:04