如何将AppEngine 500错误重定向到其他位置?

时间:2010-02-24 18:46:51

标签: http google-app-engine

如何将500个错误从Google appengine重定向到其他位置。

以下是一个示例场景:

如果出现500错误,http://example.appspot.com/testfile.ext的所有请求都应重定向到http://www.example.com/testfile.ext

这基本上是将500错误与302重定向相结合。是否可以解决这个问题?

1 个答案:

答案 0 :(得分:0)

它可以用我知道的最简单的方式重定向故障

   try:
    #stuff    
   except:
     self.redirect('http://www.example.com/testfile.ext')
     return

或者这个稍微复杂一点的重定向可以从301修改为302

def redirect_from_appspot(wsgi_app):
    def redirect_if_needed(env, start_response):
        if env["HTTP_HOST"].startswith('my_app_name.appspot.com'):
            import webob, urlparse
            request = webob.Request(env)
            scheme, netloc, path, query, fragment = urlparse.urlsplit(request.url)
            url = urlparse.urlunsplit([scheme, 'www.my_domain.com', path, query, fragment])
            start_response('301 Moved Permanently', [('Location', url)])
            return ["301 Moved Peramanently",
                  "Click Here" % url]
        else:
            return wsgi_app(env, start_response)
    return redirect_if_needed

案例取决于500错误是您的应用或谷歌服务器。最简单的是在gae控制台中使用它我们可以请求应用引擎团队启用,或者yaml或大多数正式的正则表达式。简单的方法是尝试,除了和重定向。