301、302、307 和 308 应该怎样选择?
301 和 308 表示永久迁移,302 和 307 表示临时跳转。307、308 明确保留原请求方法,301、302 在旧客户端上可能把 POST 改成 GET。普通 SEO 改址常用 301;需要严格保留方法时选 307 或 308。上线前还要确认目标平台实际返回的代码。
SEO / 运维
每行输入一条旧路径和最终目标,检查重复、循环与重定向链,再按目标平台的真实语义生成配置。
每行:来源路径 | 目标地址 | 可选状态码。来源按精确路径处理。
DEPLOY CHECKLIST
检查真实状态码用浏览器网络面板或 curl 查看第一跳,确认是预期的 301、302、307 或 308,而不是平台自动改写后的其他状态。
目标直接返回 200旧地址应只跳一次就到最终 canonical 页面。多级链会增加延迟、浪费抓取,并让迁站信号变得模糊。
保留旧规则足够久迁站和改 URL 后保留重定向,更新内链、Sitemap、canonical 与外部重要链接,并持续观察 404、抓取和索引变化。
平台语义参考Next.js redirects、Nginx rewrite module与Netlify redirects。
RELATED TOOLS
USE & REVIEW
301 和 308 表示永久迁移,302 和 307 表示临时跳转。307、308 明确保留原请求方法,301、302 在旧客户端上可能把 POST 改成 GET。普通 SEO 改址常用 301;需要严格保留方法时选 307 或 308。上线前还要确认目标平台实际返回的代码。
Vercel redirects 的 permanent 布尔配置对应临时 307 和永久 308。Next.js redirects 另有 statusCode 属性,可以明确生成 301、302、307 或 308。工具按平台分别处理,不会再把界面上选择的 301 伪装成实际返回 308 的配置。
如果 /a 跳到 /b,而 /b 又跳到 /c,就是两跳链。链会增加网络延迟和抓取成本,也让缓存、统计与迁移信号更难判断。工具会发现批量规则中目标仍是另一条来源的情况,建议把 /a 和 /b 都直接指向最终返回 200 的 /c。
不同平台语法不一样。工具只在 Nginx 和 Apache 中提供明确的保留或删除选项;Next.js、Vercel 与 Netlify 的简单静态规则按平台默认行为处理。若业务必须删除、改名或有条件合并参数,应使用 Middleware、Edge Function 或服务端代码并写自动化测试。
没有适用于所有站点的固定天数。只要旧 URL 仍可能被用户、书签、外链或搜索引擎访问,就应保留;网站迁移通常按年而不是按周考虑。同步更新内链、Sitemap 和 canonical,但不要因为索引开始变化就立刻删除旧规则。
先在预览环境抽查正常路径、带查询参数路径和不存在路径,再用浏览器网络面板或 curl 查看第一跳的状态码与 Location。确认目标直接返回 200、没有循环或链,并检查 POST 等非 GET 请求是否需要保留方法。永久规则还应准备可回滚配置。