301 与 302 重定向的区别

整理永久移动与临时移动,以及保留请求方法的 308、307。

301 Moved Permanently 表示资源已永久移动到新的 URL。搜索引擎收到这个信号后,会把旧 URL 的排名和链接权重转移到新 URL。用于不会撤回的移动,例如域名迁移或从 HTTP 切换到 HTTPS。

302 Found 是临时移动。原来的 URL 仍然有效,所以搜索引擎不会转移排名。它适用于很快就会恢复的情况,比如临时跳转到维护页面,或登录后的跳转。

有一点需要注意,就是请求方法的保留。历史上,浏览器有时会在 301、302 时把 POST 改成 GET。如果必须保留方法,永久移动用 308,临时移动用 307;在 POST 之后把用户引导到结果页面时,使用 303 See Other。