当前位置: 首页 > 面试题库 >

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

堵毅然
2023-03-14
问题内容

我一直在使用Golang测试Google App Engine
SDK,但在投放静态html页面时遇到问题。如果我在app.yamlunder处理程序中添加了内容,那很好,但是当尝试从我的Go应用程序内部进行路由时;尝试网址时http://localhost:8080/tr,页面返回404。

我的文件系统设置为:

/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)
}

问题答案:

您不应该使用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


 类似资料:
  • 问题内容: 一个充满火花的世界: 我该如何返回静态文件index.html? 笔记: 我需要这个index.html放在罐子里 本着Spark Java简洁性的精神,我想尽可能避免使用模板,这对于静态页面而言可能会显得过大。 问题答案: 您可以通过以下方法将绝对路径传递到静态资源目录来实现: 或者通过此方法传递相对路径: 在设置任何路线之前,请先调用此选项。在静态资源目录的根目录中创建index.

  • 前一节的准备工作做好之后,我们可以开始开发这个演示应用了。本节,我们要向开发动态页面迈出第一步:创建一些 Rails 动作和视图,但只包含静态 HTML。Rails 动作放在控制器中(MVC 中的 C,参见 1.3.3 节),其中的动作是为了实现相关的功能。第 2 章已经简要介绍了控制器,全面熟悉 REST 架构之后(从第 6 章开始),你会更深入地理解控制器。回想一下 1.3 节介绍的 Rail

  • 在本章中,我们将研究如何在Drupal中创建Static Pages 。 让我们添加一些名为“关于我们”和“服务”的静态页面。 使用静态页面的主要障碍是速度和稳定性。 静态网站比动态网站更快。 以下是创建静态页面的简单步骤。 Step 1 - 点击Content --》 Add content链接”。 Step 2 - 单击Basic pages 。 Step 3 - 将显示Create basi

  • Examples Static export next export可以输出一个 Next.js 应用作为静态资源应用而不依靠 Node.js 服务。 这个输出的应用几乎支持 Next.js 的所有功能,包括动态路由,预获取,预加载以及动态导入。 next export将把所有有可能渲染出的 HTML 都生成。这是基于映射对象的pathname关键字关联到页面对象。这个映射叫做exportPath

  • 问题内容: 这是无效的代码: 这是一个愚蠢的示例,但是在静态类构造函数中,我们不能这样做。为什么?是否有充分的理由呢?有人对此有更多了解吗? 因此,我应该这样做的原因是在那里结束构建。 谢谢 问题答案: 我认为原因是初始化程序与字段初始化(以及实例初始化程序的构造函数)一起携带。换句话说,JVM仅识别一个位置来初始化静态字段,因此所有的初始化(无论是否以块为单位)都必须在此完成。 因此,例如,当您

  • 我有hooks.java用于驱动程序类,loginpage.java用于所有登录页面对象和步骤定义类。我的页面工厂对象没有在我的登录类中初始化,它返回null由于null驱动程序。具有@before标记的驱动程序类,它的initiate在除驱动程序之外的所有类之前为空。当我使用PageFactory.InitElements(driver、LoginPage.Class)时;在时间页工厂初始化的钩