企业官网改版时,Nginx 301 重定向保权重的关键是旧URL与新URL精准一对一映射,路径、参数、状态码必须完整保留,杜绝跳首页;需分场景配置location或rewrite,全量保留$query_string,域名与协议跳转须分离部署,并上线前用nginx -t、curl和隐身模式三重验证。

企业官网改版时,Nginx 的 301 重定向要真正保住搜索引擎权重,关键不是“加跳转”,而是让每一条旧 URL 都精准、完整、永久地落到对应的新 URL 上——路径不变、参数不丢、状态码明确、无中间跳转。否则搜索引擎会认为内容消失或迁移混乱,权重自然流失。
逐页映射,拒绝“全站跳首页”
搜索引擎按页面索引和传递权重。如果把所有旧链接都 return 301 到新站首页,旧文章、产品页、联系页的独立权重就全部归零了。必须按实际页面结构做一对一映射:
- 单页迁移(如 /about.html → /company/):用 location = /about.html { return 301 /company/; },精确匹配、零开销
- 目录级迁移(如 /news/2024/post-1 → /blog/2024/post-1):用 rewrite ^/news/(.*)$ /blog/$1 permanent;,捕获并复用路径
- 后缀清理(如 /contact.php → /contact):用 location ~ \.php$ { rewrite ^(/.*?)(?:\.php)(\?.*)?$ $1$2 permanent; }
保留 $request_uri,参数一个都不能少
用户点击的带 UTM、ID、ref 等参数的链接,是流量来源和转化归因的关键。搜索引擎也靠这些参数识别页面变体。丢失它们等于切断追踪链:
- ✅ 正确写法:return 301 https://new.com$request_uri;(含 ? 后全部)
- ❌ 错误写法:return 301 https://new.com$uri;($uri 不含 query string)或 return 301 https://new.com/;(强制跳首页)
- 若需过滤特定参数(如 utm_source),应上线稳定后再用 map 模块精细控制,初期务必全量保留
域名与协议跳转必须分离且全覆盖
改版常伴随域名更换或 HTTPS 强制升级。这两类跳转必须在独立的 server 块中完成,避免逻辑混杂、漏配或循环:
- 旧域名跳新域名:server { listen 80; server_name old.com www.old.com; return 301 https://new.com$request_uri; }
- HTTP 全站跳 HTTPS:server { listen 80; server_name new.com www.new.com; return 301 https://$host$request_uri; }(注意:只放 80 块,别塞进 443 ssl 块里)
- 统一主域名(www → non-www):server { listen 443 ssl; server_name www.new.com; return 301 https://new.com$request_uri; }
上线前必须验证的三件事
配置写对 ≠ 效果到位。没验证的 301 就像没签收的快递,权重根本到不了位:
- 运行 nginx -t 检查语法,确认无分号遗漏、括号错位等硬错误
- 用 curl -I http://old.com/some-page?ref=test 查看响应头:必须返回 HTTP/1.1 301 Moved Permanently 且 Location: 值完全匹配预期(含参数)
- 打开浏览器隐身窗口访问跳转链接,确认最终落地页能正常加载(非 404 或白屏)——301 只导流,不救内容缺失


















