为了账号安全,请及时绑定邮箱和手机立即绑定

静态页面在 Google App Engine 中返回 404

静态页面在 Google App Engine 中返回 404

Go
www说 2021-12-20 09:59:35
我一直在使用 Golang 测试 Google App Engine SDK,但在提供静态 html 页面时遇到了问题。如果我app.yaml在底层处理程序中添加内容很好,但是当我尝试从 Go 应用程序内部路由它时;尝试http://localhost:8080/tr页面返回 404的 url 。我的文件系统设置为:/main.go/app.yaml/testRoute.html我的主要app.go看起来像这样:import (    "fmt"    "net/http"    "github.com/gorilla/mux")func init() {    r := mux.NewRouter()    r.HandleFunc("/", index)    r.HandleFunc("/tr", testRoute)    http.Handle("/", r)}func index(w http.ResponseWriter, r *http.Request) {   //No Issues here    fmt.Fprint(w, "Main Index.")}func testRoute(w http.ResponseWriter, r *http.Request) {     http.FileServer(http.Dir("testRoute.html")).ServeHTTP(w, r)}
查看完整描述

2 回答

?
慕的地6264312

TA贡献1817条经验 获得超6个赞

您不应该使用 Go 处理程序来提供静态文件(除非您想合并其他逻辑,例如高级日志记录或计数)。

您可以在应用程序的配置文件中定义静态文件处理程序app.yaml。这在官方文档中有详细说明:静态文件处理程序

静态文件是针对给定 URL 直接提供给用户的文件,例如图像、CSS 样式表或 JavaScript 源文件。静态文件处理程序描述应用程序目录中的哪些文件是静态文件,以及哪些 URL 为它们提供服务。

为提高效率,App Engine 将静态文件与应用程序文件分开存储和提供。默认情况下,静态文件在应用程序的文件系统中不可用。这可以通过将application_readable选项设置为 来更改true

静态文件处理程序可以通过两种方式定义:作为映射到 URL 路径的静态文件的目录结构,或者作为将 URL 映射到特定文件的模式。

要使 AppEngine 自动提供静态文件,请将此条目添加到您的app.yaml

- url: /tr
  static_files: testRoute.html
  upload: testRoute.html

要自动提供整个静态文件目录(包括子文件夹,递归),请将此条目添加到app.yaml

- url: /assets
  static_dir: assets


查看完整回答
反对 回复 2021-12-20
?
湖上湖

TA贡献2003条经验 获得超2个赞

我使用 ServeFile 方法修复了这个问题;这也适用于文件夹(例如“/assets/testRoute.html”)


func testRoute(w http.ResponseWriter, r *http.Request) { 

    http.ServeFile(w, r, "testRoute.html")

}


查看完整回答
反对 回复 2021-12-20
  • 2 回答
  • 0 关注
  • 238 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号