【发布时间】:2020-11-12 17:54:19
【问题描述】:
我的应用引擎有一个带有一些静态页面的应用。
我想提供我的静态内容和脚本。最后,我想为其他一切服务 404。
我的 app.yaml 文件看起来像
runtime: go113
handlers:
- url: /myscripy
script: auto
- url: /$
static_files: public/index.html
secure: always
upload: public/index.html
- url: /(.*/)?$
static_files: public/\1index.html
secure: always
upload: public/(.*/)?index.html
http_headers:
Strict-Transport-Security: max-age=31536000; includeSubDomains
X-Frame-Options: SAMEORIGIN
好的,除了一些事情之外,它可以工作
-
我不清楚为什么
- url: /$是必要的,为什么它不被- url: /(.*/)?$包含,但这只是一个旁注。 -
主要问题:任何不匹配的 URL 都将呈现为具有 200 状态代码而不是 404 的空文件。
-
我可以通过添加类似的东西来强制 404s
- url: /.*
static_files: public/some_non_existing_file.html
secure: always
upload: public/some_non_existing_file.html
在 app.yaml 文件的末尾,但这会触发一个丑陋的 404 最后一页,这不是很吸引人。
- 我可以提供漂亮的 404 自定义页面,例如
- url: /.*
secure: always
static_files: public/404.html
upload: public/404.html
http_headers:
Status: 404
其中 public/404.html 存在,但是 Status: 200 标头在 Status: 404 标头之前发送,使整个响应为 200。
- 我有希望
error_handlers:
- file: 404.html
为我做点什么,但不,它似乎什么都不做。
- 我当然可以添加自定义脚本来创建 404 响应,但我觉得有点傻。难道没有更好的办法吗?
我有点难过 - 我不敢相信像 GAE 这样长期存在的行业工具无法静态定义自定义 404 页面,甚至无法为不存在的页面呈现 404 状态代码。
非常感谢任何建议,在此先感谢!
【问题讨论】: