gpt4 book ai didi

python - 静态文件的 Google App Engine 自定义 404 页面

转载 作者:太空狗 更新时间:2023-10-30 01:37:26 24 4
gpt4 key购买 nike

我正在开发一个主要由静态内容组成的 GAE 应用程序。我配置了以下处理程序:

- url: /content/(.*\..*)
static_files: static/content/\1
upload: static/content/(.*)

- url: /content/(.+)
static_files: static/content/\1.html
upload: static/content/(.*)\.html

第一个处理程序用于提供图像、样式表等;第二个处理纯 URL,如 /content/zoo/monkeys/george 并提供相应的 HTML 文件。

现在,如果 URL 没有相应的静态文件,GAE 将返回一个空页面。我想为这些情况设置自定义 404 页面,但显然这并不简单。

类似问题的答案建议在我的 app.yaml 底部放置一个“包罗万象”的处理程序,以及生成错误页面的 RequestHandler。但是,/content/(.+) 匹配 /content/ 下的所有 URL,无论是否有效,这意味着这样的处理程序不会被调用。

我只能想到另外两个解决方案:

  1. 通过动态处理程序路由所有请求,该处理程序为有效 URL 写出内容,或为无效 URL 写出错误页面。我不喜欢这样,因为它的效率远低于让 GAE 为静态文件提供服务。
  2. 声明一个单独的静态处理程序,显式匹配每个 静态文件,然后在底部放置一个“包罗万象”的处理程序——我也不喜欢这样,因为它会导致一长串处理程序。

对于这种情况,是否有另一种方法来设置适当的 404 页面?

最佳答案

对那些认为它有用的人的旧线程的回答。

  1. 添加 require_matching_file: true 作为处理程序的最后一个属性。

    如果没有相应的文件,将调用瀑布中的下一个处理程序,而不是生成默认的 404 页面。

  2. 然后在 app.yaml 的底部添加一个新的包罗万象的部分,其中包含一个处理无效 URL 的动态处理程序

例子:

- url: /content/(.*\..*)
static_files: static/content/\1
upload: static/content/(.*)
require_matching_file: true

- url: /content/(.+)
static_files: static/content/\1.html
upload: static/content/(.*)\.html
require_matching_file: true

- url: /.*
script: auto

这样,GAE 将通过前 2 个处理程序为所有现有静态 Assets 提供服务。只会为不存在的 URL 调用动态处理程序。您显然需要为此编写代码...

这里有一个很大的免责声明:require_matching_file 没有记录。但事实证明,当您上传时,GAE 会自动将该字段添加到您的 app.yaml 中。

关于python - 静态文件的 Google App Engine 自定义 404 页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37082610/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com