Google AppEngine自定义404动态页面

时间:2011-03-23 21:36:39

标签: google-app-engine http-status-code-404 administration

我想在/ dev / path中设置自定义404页面和管理区域,所以我有这个app.yaml:

application: appengine_app
version: 0-00-1
runtime: python
api_version: 1

handlers:    

- url: /dev/.*
  script: dispatch.py
  login: admin

- url: /.*
  script: dispatch.py

使用下一个代码

app = webapp.WSGIApplication( [ ('/dev/analyze', AnalyzePage)
                              , ('/.*', NotFoundPage) ]
                              , debug=False )

在本地机器上一切正常。但是当我尝试在生产服务器上获取 / dev / analyze 时,它会重定向到 /_ah/login_required?continue=http://appengine_app.appspot.com/dev/analyze 它被 NotFoundPage 捕获。所以我不能在生产上使用管理部分。我可以拥有动态404页面和管理部分的网站吗?

UPD :如果我关闭NotFoundPage并尝试在生产服务器上获取 / dev / analyze ,它会重定向到 / _ ah / login_required?continue = http: //appengine_app.appspot.com/dev/analyze 并回复404错误

1 个答案:

答案 0 :(得分:0)

您已将app.yaml中的脚本句柄设置为admin-only,这意味着运行时将确保您在向代码发送请求之前以管理员身份登录。运行时没有办法知道页面会产生404 - 这可能是你甚至不希望非管理员用户发现的东西。

如果向未登录的用户发送404s很重要,您可以使app.yaml中的处理程序更具体 - 例如,使其仅匹配/dev/analyze - 或者您可以转移管理员检查你的代码。