一聚教程网:一个值得你收藏的教程网站

最新下载

热门教程

旧链接永久失效时 Nginx 301 重定向如何做

时间:2026-08-07 10:57:47 编辑:袖梨 来源:一聚教程网

核心是用 return 301 指令实现永久跳转,避免404并保留SEO权重;单页跳转用 location = /old 精确匹配,整站迁移在 server_name 列旧域名并 return 301 https://new$request_uri,目录级批量跳转用 rewrite 正则捕获变量加 permanent 标志;配置后须 nginx -t 检查并 curl -I 验证响应头。

旧链接永久失效时,用 Nginx 做 301 重定向,核心是让服务器明确告诉浏览器和搜索引擎“这个地址已永久迁移”,既避免用户看到 404,也保住 SEO 权重。最推荐、最高效的做法是直接用 return 301 指令,而不是 rewrite —— 它更轻量、执行更快、配置更清晰。

单页面精准跳转(比如 /old-page.html → /new-page)

适用于个别 URL 变更,比如文章改版、栏目结构调整。直接在 server 块里加 location 匹配路径:

  1. location = /old-page.html 精确匹配(等号表示完全相等,避免误匹配)
  2. 搭配 return 301 /new-page; 或完整 URL:return 301 https://example.com/new-page;
  3. 如果新地址需保留查询参数(如 ?utm_source=xxx),写成 return 301 /new-page?$args;

整站域名迁移(比如 old-site.com → new-site.com)

适用于品牌升级、换域名等场景。关键是把所有旧域名都纳入监听,并统一跳转:

  1. server_name 列出全部旧域名,例如:server_name old-site.com www.old-site.com old.net;
  2. return 后用 https://new-site.com$request_uri,确保路径和参数原样传递
  3. 协议建议写死为 https://,尤其当新站强制 HTTPS 时,避免 $scheme 返回 http 导致跳转失败

目录级批量重定向(比如 /article/123.html → /posts/123)

适用于 URL 结构整体调整,需要提取路径中的变量。这时 rewrite 更灵活:

  1. 用正则捕获关键部分,例如:rewrite ^/article/(d+).html$ /posts/$1 permanent;
  2. permanent 是关键标记,它等价于 return 301,会自动补全 Location 头
  3. 注意 rewrite 在 location 块或 server 块中均可,但优先级高于 return;若同时存在,rewrite 会先执行

验证与上线前检查

配置完别急着 reload,这几步能避免线上出错:

  1. 运行 nginx -t 检查语法是否正确
  2. 用 curl 测试响应头:curl -I http://old-site.com/old-page.html,确认返回 HTTP/1.1 301 Moved Permanently 和正确的 Location: 字段
  3. 检查跳转后是否带多余斜杠、参数丢失、HTTPS 混合内容等问题
  4. 上线后用站长工具或 Google Search Console 观察旧 URL 的索引是否逐步转向新 URL

热门栏目