TrueURL
TrueURL

菜单

免费重定向工具

301 重定向检测

查明 URL 是永久重定向还是临时重定向。TrueURL 会逐跳检测,并告诉您搜索引擎是否会把这次迁移视为永久性的。

永久还是临时:为什么状态码很重要

服务器通过状态码告诉搜索引擎这是哪一种迁移。永久重定向(301 或 308)表示旧 URL 已永久停用,因此搜索引擎会将新 URL 编入索引,并把链接等信号合并到新 URL 上。临时重定向(302、303 或 307)表示旧 URL 之后还会恢复,因此它通常会继续保留在索引中。

访问者完全察觉不到两者的区别,所以用错状态码可能几个月都没人发现。很多工具在没有特别指定时默认发送临时重定向:PHP 的 header('Location: ...')、Express 的 res.redirect() 和 Apache 的 Redirect 指令默认都是 302。

如何解读检测结论

TrueURL 会检测重定向链中的每一跳,而不只是第一跳:

  • 所有重定向都是 301 或 308:属于永久迁移。页面迁移、更换域名和升级到 HTTPS 时,应该得到的就是这个结果。
  • 至少有一跳是 302、303 或 307,或者是 meta refresh 或 JavaScript 重定向:这条重定向链并非完全永久。除非迁移确实是临时的,否则请把这些跳改为服务器端 301 重定向。
  • 完全没有重定向:URL 直接返回了响应。如果原本预期会有重定向,说明规则没有生效,或者缓存仍在提供旧页面。
  • 最终页面无法加载:重定向本身正常,但目标页面返回 404、410 或 5xx 错误,或者某一跳失败。请修复目标页面,或者把重定向指向最相关的页面。

301 与 308、302 与 307 的区别

301 和 308 都是永久重定向,Google 对二者的处理方式相同。区别在于请求方法:遇到 301 后,浏览器可能会把 POST 改为 GET,而 308 保证请求方法和请求体保持不变。普通页面使用 301,必须继续接收 POST 请求的 API 端点或表单提交地址则使用 308。两种临时重定向也是同样的关系:302 可能会改变请求方法,307 则绝不会。

如需全面比较所有 3xx 状态码,请阅读 HTTP 重定向状态码详解。

什么情况下适合使用临时重定向

  • A/B 测试和短期推广活动,在几周内把流量引导到另一个页面。
  • 短时间的服务中断:可以临时重定向到状态页面,不过对搜索引擎来说,在原 URL 上返回 503 是更好的信号。
  • 根据访问者的语言、位置、设备或登录状态进行的重定向,此时原 URL 必须保留在索引中。
  • 表单提交之后(Post/Redirect/Get 模式),用 303 See Other 把浏览器引导到结果页面。

其他情况,尤其是网站迁移和 URL 变更,请使用 301。

相关指南

  • 阅读约 13 分钟

    HTTP 重定向状态码详解:301、302、303、307、308 等

    详解每个 3xx 状态码的含义:从是否永久、是否保留请求方法、缓存和 SEO 影响 4 个方面对比 301、302、303、307 和 308 跳转,并附 nginx、Apache 和 PHP 配置示例。

    阅读全文

常见问题

如何判断一个跳转是 301 还是 302?

在上方输入旧 URL。TrueURL 会在不自动跟随重定向的情况下请求它,并显示每一跳的准确状态码。在命令行中,curl -I https://example.com/old-page 只显示第一个响应,除非加上 -L,而且它无法检测 meta refresh 或 JavaScript 重定向。如何检测 URL 重定向一文详细介绍了 curl 的相关选项。

301 重定向会完整传递 SEO 权重吗?

Google 表示,301、302 及其他服务器端重定向都不会损失 PageRank。不同之处在于规范化(canonical)信号:301 告诉 Google 将新 URL 编入索引,而 302 则暗示保留旧 URL。两个页面都被重新抓取之后,排名通常会稳定在新 URL 上。

301 重定向应该保留多久?

Google 建议至少保留一年,而永久保留更为稳妥:旧链接、书签和其他网站上的引用在多年之后仍会使用旧 URL。保留一条重定向规则几乎没有任何成本。

为什么我设置的 301 重定向显示为 302?

常见原因包括:插件或框架默认使用 302、CDN 或主机托管服务的规则先于您的规则执行,或者缓存了旧的响应。请逐跳查看:如果 302 来自您的规则所处理范围之外的主机名或路径,说明是另一层在添加它。

浏览器会缓存 301 重定向吗?

会。浏览器可能会长时间缓存 301 和 308 重定向,往往直到缓存被清除为止,因此对于已经访问过的用户,错误的 301 可能会一直生效。测试新规则时,请先使用 302 或较短的 Cache-Control: max-age,确认无误后再改为 301。TrueURL 不缓存响应,因此始终显示服务器当前发送的内容。

308 重定向比 301 更好吗?

对 SEO 来说并非如此,Google 对两者一视同仁。只有在必须保留请求方法时,308 才更合适,例如接收 POST 请求的 API 端点。一些非常老旧的客户端不支持 308,因此对于网页来说,301 仍然是稳妥的默认选择。

已删除的页面应该 301 重定向到首页吗?

只有当首页确实是最合适的替代页面时才应这样做。Google 可能会把已删除页面重定向到首页的做法视为软 404。请重定向到内容最接近的对应页面;如果没有,就返回 410 Gone 或 404 Not Found。