加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python – 用于静态文件的Google App Engine自定义404页面

发布时间:2020-12-20 13:12:01 所属栏目:Python 来源:网络整理
导读:我正在开发一个GAE应用程序,它主要由静态内容组成.我已经配置了以下处理程序: - url: /content/(.*..*) static_files: static/content/1 upload: static/content/(.*)- url: /content/(.+) static_files: static/content/1.html upload: static/content/
我正在开发一个GAE应用程序,它主要由静态内容组成.我已经配置了以下处理程序:

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

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

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

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

对类似问题的回答建议在app.yaml的底部放置一个“catch-all”处理程序,并使用生成错误页面的RequestHandler.
但是,/ content /(.)匹配/ content /下的所有URL,有效与否,这意味着不会调用这样的处理程序.

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

>通过动态处理程序路由所有请求,动态处理程序为有效URL写入内容,或为无效URL写入错误页面.我不喜欢这个,因为它比让GAE提供静态文件效率低得多.
>声明一个单独的静态处理程序,它显式匹配每个静态文件,然后在底部放置一个“catch-all”处理程序 – 我也不喜欢这样,因为它会导致一长串的处理程序.

还有另一种方法可以为这种情况设置一个合适的404页面吗?

解决方法

回答那些会发现它有用的旧线程.

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

如果没有相应的文件,将调用瀑布中的下一个处理程序,而不是生成默认的404页面.
>然后在app.yaml底部添加一个新的catch-all部分,其中包含一个处理无效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将通过前两个处理程序为所有现有的静态资产提供服务.将仅针对不存在的URL调用动态处理程序.你需要为此编写代码……

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读