Ton*_*ony 6 python google-app-engine google-app-engine-python
我正在开发一个GAE应用程序,该应用程序主要由静态内容组成。我已经配置了以下处理程序:
- url: /content/(.*\..*)
static_files: static/content/\1
upload: static/content/(.*)
- url: /content/(.+)
static_files: static/content/\1.html
upload: static/content/(.*)\.html
Run Code Online (Sandbox Code Playgroud)
第一个处理程序用于提供图像,样式表等。第二个处理类似的普通URL /content/zoo/monkeys/george并提供相应的HTML文件。
现在,如果URL没有相应的静态文件,GAE将返回一个空页面。我想针对这些情况设置自定义404页面,但显然这并不简单。
回答类似问题的建议建议在my的底部放置一个“包罗万象”的处理程序app.yaml,并使用RequestHandler生成错误页面。但是,请/content/(.+)匹配/content/,有效与否下的所有URL ,这意味着将不会调用该处理程序。
我只能想到另外两个解决方案:
在这种情况下,还有另一种方法来设置适当的404页面吗?
小智 7
为那些会发现它有用的人回答旧线程。
添加require_matching_file: true为处理程序的最后一个属性。
如果没有相应的文件,将调用瀑布中的下一个处理程序,而不是生成默认404页面。
然后在底部添加一个新的包罗万象的部分,其中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
Run Code Online (Sandbox Code Playgroud)
这样 GAE 将通过前 2 个处理程序为所有现有的静态资产提供服务。动态处理程序将只为不存在的 URL 调用。您显然需要为此编写代码......
这里有一个很大的免责声明:require_matching_file没有记录。但事实证明,app.yaml当您上传该字段时,GAE 会自动将该字段添加到您的字段中。
N.P*_*N.P -1
尝试“错误处理程序”。
error_handlers:
- file: custom_404.html
Run Code Online (Sandbox Code Playgroud)
来自GAE App.yaml 文档- 每个文件条目都指示应代替通用错误响应提供的静态文件。如果您指定的文件元素没有相应的 error_code 元素,则静态文件将是您的应用程序的默认错误页面。
| 归档时间: |
|
| 查看次数: |
691 次 |
| 最近记录: |