### 重定向(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 時被觸發。