Google app engine 404页不';在访问静态目录中丢失的文件时不显示

Google app engine 404页不';在访问静态目录中丢失的文件时不显示,google-app-engine,flask,static-files,Google App Engine,Flask,Static Files,我正在将我的博客从GitHub页面移植到Google应用程序引擎。我已经设置了我的app.yaml,如下所示 runtime: python27 api_version: 1 version: 5 threadsafe: yes handlers: - url: /api/.* script: main.app - url: / static_files: src/_site/index.html upload: src/_site/index.html - url: /(.

我正在将我的博客从GitHub页面移植到Google应用程序引擎。我已经设置了我的app.yaml,如下所示

runtime: python27
api_version: 1
version: 5
threadsafe: yes

handlers:

- url: /api/.*
  script: main.app

- url: /
  static_files: src/_site/index.html
  upload: src/_site/index.html

- url: /(.*)/
  static_files: src/_site/\1/index.html
  upload: src/_site/*.*

- url: /(.*)
  static_files: src/_site/\1
  upload: src/_site/(.*)

error_handlers:
- file: static/404.html
您可以通过转到直接访问我的404页面,也可以访问flask应用程序处理的缺失页面,但转到静态文件覆盖的任何页面,如显示
错误:未找到请求的URL/此服务器上未找到不存在的页面。
错误


我应该怎么做呢?

我认为您需要在视图文件中创建一个错误处理程序。 可以使用以下代码执行此操作:

@app.errorhandler(404)
def page_not_found(e):
    return render_template("404.html"),404

对于其他错误,您也可以将404替换为500、403等。

是静态的/404.html,位于项目根目录中,并与主应用程序一起上载吗?它是,而且应该是。我还尝试了
templates/404.html
(因此它与工作烧瓶404相同),并尝试将其作为
404.html
放在我的开发服务器的根目录中。两者都不起作用。是否有方法测试文件是否与主应用程序一起上载?您的意思是它在测试服务器上不工作吗?以详细模式上载,它会显示文件已部署。我通常将默认错误文件保留在应用程序的根目录中。(请记住相应地更改app.yaml)实际上退一步,看看你在做什么,我真的认为这可能不会达到你的预期。您的主处理程序将捕获任何404。错误处理程序仅适用于未捕获的异常。如果主处理程序在404上引发异常,则将使用此处理程序。它通常用于系统级错误等。您需要在应用程序中执行404处理,或者如果遇到404,不想通过应用程序显示错误,请引发异常。谢谢,解决方案是按照Tim Hoffman的建议执行,并确保首先处理我的所有静态目录,因此,如果他们有一个404,它将转到main.app,并使用它已有的404处理程序。