【发布时间】:2016-09-02 03:08:39
【问题描述】:
我正在开发一个主要由静态内容组成的 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 底部放置一个“包罗万象”的处理程序,并带有一个生成错误页面的RequestHandler。
但是,/content/(.+) 匹配 /content/ 下的所有 URL,无论是否有效,这意味着不会调用此类处理程序。
我只能想到另外两个解决方案:
- 通过动态处理程序路由所有请求,该处理程序会为有效 URL 写出内容,或为无效 URL 写出错误页面。我不喜欢这样,因为它比让 GAE 提供静态文件的效率要低得多。
- 声明一个单独的静态处理程序,显式匹配每个静态文件,然后在底部放置一个“catch-all”处理程序——我也不喜欢这样,因为它会导致一长串处理程序。
是否有另一种方法可以为这种情况设置适当的 404 页面?
【问题讨论】:
-
我认为你已经把自己画到了一个角落。 Appengine 在设计时并未考虑到这种用例。
标签: python google-app-engine google-app-engine-python