企业🤖AI Agent构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
### 重定向(redirect) Tornado 中的重定向有两种主要方法:`self.redirect`,或者使用 `RedirectHandler`。 你可以在使用 `RequestHandler` (例如 `get`)的方法中使用 `self.redirect`,将用户 重定向到别的地方。另外还有一个可选参数 `permanent`,你可以用它指定这次操作为永久性重定向。 该参数会激发一个 `301 Moved Permanently` HTTP 状态,这在某些情况下是有用的, 例如,你要将页面的原始链接重定向时,这种方式会更有利于搜索引擎优化(SEO)。 `permanent` 的默认值是 `False`,这是为了适用于常见的操作,例如用户端在成功发送 POST 请求 以后的重定向。 ``` self.redirect('/some-canonical-page', permanent=True) ``` `RedirectHandler` 会在你初始化 `Application` 时自动生成。 例如本站的下载 URL,由较短的 URL 重定向到较长的 URL 的方式是这样的: ``` application = tornado.wsgi.WSGIApplication([ (r"/([a-z]*)", ContentHandler), (r"/static/tornado-0.2.tar.gz", tornado.web.RedirectHandler, dict(url="http://github.com/downloads/facebook/tornado/tornado-0.2.tar.gz")), ], **settings) ``` `RedirectHandler` 的默认状态码是 `301 Moved Permanently`,不过如果你想使用 `302 Found` 状态码,你需要将 `permanent` 设置为 `False`。 ``` application = tornado.wsgi.WSGIApplication([ (r"/foo", tornado.web.RedirectHandler, {"url":"/bar", "permanent":False}), ], **settings) ``` 注意,在 `self.redirect` 和 `RedirectHandler` 中,`permanent` 的默认值是不同的。 这样做是有一定道理的,`self.redirect` 通常会被用在自定义方法中,是由逻辑事件触发 的(例如环境变更、用户认证、以及表单提交)。而 `RedirectHandler` 是在每次匹配到请求 URL 时被触发。