301和302重定向有什么区别?一文说清楚

做网站或者调试接口时,经常会遇到 301 和 302 这两个状态码。看起来都是跳转,但用错了可能会影响 SEO 或者用户体验。搞清楚它们的区别,能帮你少走很多弯路。

301:永久搬家

301 的全称是 Moved Permanently,意思是“永久移动”。就像你家搬到了新地址,老房子彻底不住了,以后所有寄到旧地址的信件都应该转到新家。

比如你把网站从 http://old-site.com 换成了 https://new-site.com,配置一个 301 跳转,搜索引擎就会慢慢把旧页面的权重转移到新页面上,用户访问旧链接也会自动跳过去。

HTTP/1.1 301 Moved Permanently
Location: https://new-site.com

浏览器还会缓存这种跳转,下次访问旧地址直接跳新地址,连请求都不发了。

302:临时借住

302 是 Found(以前叫 Moved Temporarily),意思是“临时跳转”。就像你出差几天住酒店,老家的房子还留着,等你回来继续住。

举个例子,网站正在维护,你想把用户暂时引导到一个公告页,但不想让搜索引擎认为原来的页面已经没了。这时候就该用 302。

HTTP/1.1 302 Found
Location: https://example.com/maintenance.html

搜索引擎看到 302,知道原页面还在,不会转移权重。用户也只是临时被带过去,过两天系统恢复,自然就回到原来的内容。

常见误区

有人觉得反正都能跳,随便选一个就行。其实不是。如果你把临时活动页用了 301,搜索引擎可能就把主页面的排名给丢了。反过来,本来要永久迁移,却用了 302,搜索引擎会一直抓取旧地址,新站收录变慢。

还有些 CMS 后台设置跳转时,默认就是 302,改完记得检查是不是该用 301。

怎么判断用了哪种?

打开浏览器开发者工具,切到 Network 标签,点开一个跳转链接,看响应头里的 Status Code。如果是 301,写的就是 301 Moved Permanently;302 则是 302 Found。Location 字段就是你要去的新地址。

小技巧:刷新页面时按住 Shift,可以绕过缓存,看到真实的跳转过程。