阅读约 13 分钟
HTTP 重定向状态码详解:301、302、303、307、308 等
详解每个 3xx 状态码的含义:从是否永久、是否保留请求方法、缓存和 SEO 影响 4 个方面对比 301、302、303、307 和 308 跳转,并附 nginx、Apache 和 PHP 配置示例。
阅读全文免费重定向工具
查明 URL 是永久重定向还是临时重定向。TrueURL 会逐跳检测,并告诉您搜索引擎是否会把这次迁移视为永久性的。
按 Enter 开始检测
Cloudflare 边缘网络始终会验证证书,因此该选项无法跳过证书验证。证书问题会在检测结果中报告。
随第一个请求发送,最大 16 KB。除非设置了 Content-Type 请求头,否则 JSON 请求体以 application/json 发送,其他内容以表单形式发送。
可设为 1~50。浏览器会在 20 跳后停止。
网站可能会把手机、搜索引擎爬虫和链接预览爬虫重定向到不同的地址。
随重定向链中的每个请求一起发送。
未添加自定义请求头。
填写值后才会发送此请求头。请求头的值不会保存。
跟踪 HTML 页面中的 <meta http-equiv="refresh"> 标签和 Refresh 响应头。
跟踪页面脚本中简单、无条件的重定向,例如 location.href = "…"。
设置会保存在此浏览器中,但 Cookie、请求头的值和 POST 请求体始终不会保存。
TrueURL 会检测重定向链中的每一跳,而不只是第一跳:
301 和 308 都是永久重定向,Google 对二者的处理方式相同。区别在于请求方法:遇到 301 后,浏览器可能会把 POST 改为 GET,而 308 保证请求方法和请求体保持不变。普通页面使用 301,必须继续接收 POST 请求的 API 端点或表单提交地址则使用 308。两种临时重定向也是同样的关系:302 可能会改变请求方法,307 则绝不会。
如需全面比较所有 3xx 状态码,请阅读 HTTP 重定向状态码详解。
其他情况,尤其是网站迁移和 URL 变更,请使用 301。
阅读约 13 分钟
详解每个 3xx 状态码的含义:从是否永久、是否保留请求方法、缓存和 SEO 影响 4 个方面对比 301、302、303、307 和 308 跳转,并附 nginx、Apache 和 PHP 配置示例。
阅读全文在上方输入旧 URL。TrueURL 会在不自动跟随重定向的情况下请求它,并显示每一跳的准确状态码。在命令行中,curl -I https://example.com/old-page 只显示第一个响应,除非加上 -L,而且它无法检测 meta refresh 或 JavaScript 重定向。如何检测 URL 重定向一文详细介绍了 curl 的相关选项。
Google 表示,301、302 及其他服务器端重定向都不会损失 PageRank。不同之处在于规范化(canonical)信号:301 告诉 Google 将新 URL 编入索引,而 302 则暗示保留旧 URL。两个页面都被重新抓取之后,排名通常会稳定在新 URL 上。
Google 建议至少保留一年,而永久保留更为稳妥:旧链接、书签和其他网站上的引用在多年之后仍会使用旧 URL。保留一条重定向规则几乎没有任何成本。
常见原因包括:插件或框架默认使用 302、CDN 或主机托管服务的规则先于您的规则执行,或者缓存了旧的响应。请逐跳查看:如果 302 来自您的规则所处理范围之外的主机名或路径,说明是另一层在添加它。
会。浏览器可能会长时间缓存 301 和 308 重定向,往往直到缓存被清除为止,因此对于已经访问过的用户,错误的 301 可能会一直生效。测试新规则时,请先使用 302 或较短的 Cache-Control: max-age,确认无误后再改为 301。TrueURL 不缓存响应,因此始终显示服务器当前发送的内容。
对 SEO 来说并非如此,Google 对两者一视同仁。只有在必须保留请求方法时,308 才更合适,例如接收 POST 请求的 API 端点。一些非常老旧的客户端不支持 308,因此对于网页来说,301 仍然是稳妥的默认选择。
只有当首页确实是最合适的替代页面时才应这样做。Google 可能会把已删除页面重定向到首页的做法视为软 404。请重定向到内容最接近的对应页面;如果没有,就返回 410 Gone 或 404 Not Found。