网站迁移后,旧链接301怎么批量生成?
新站上线那天,你点开后台一看:旧链接密密麻麻列了几千条。手动一条条配301?光是想想就手抖——漏一条,可能就是一篇爆款文章的流量直接404。
别硬扛,这事真有省力办法。
为什么必须做301重定向,而不是放任不管?
旧站关了,不代表用户和搜索引擎会自动找上门。
没有301,所有从老链接点进来的用户,都会卡在404页面。
搜索引擎更直接:连续几次抓取失败,它就当这页彻底消失了。
之前那篇被几十个行业号外链引用的干货、那个靠长尾词稳居首页半年的教程——权重、排名、外链价值,全得重头来。
我帮一个教育类网站做过迁移,他们一开始没配301,结果核心课程页的自然访问量断崖下跌,恢复花了两个多月。
301不是技术动作,是“地址变更声明”:告诉Google,“这个页面搬新家了,以前攒的信誉,请原样打包转过去。”
如何系统性地整理新旧URL对应关系?
先别急着写代码。第一步,是把“谁对谁”理清楚。
这张对照表,就是你后续所有操作的地基。
最稳妥的做法,是在新站开发前就规划好URL逻辑。比如旧站用的是 /post?id=123,新站就统一改成 /course/seo-basics。结构越一致,映射越省事。
如果新旧差异大(比如从WordPress换成静态站),就得人工拉清单:
- 用 Screaming Frog 或 Sitebulb 爬一遍旧站,导出全部可访问URL;
- 在新站后台,导出所有已发布页面和文章的固定链接(WordPress 可用“WP All Export”,Typecho 可查数据库);
- 打开 Excel 或飞书多维表格,建两列:A列填旧URL,B列填对应的新URL。
重点先填高流量、高权重的页面——首页、栏目页、TOP10文章、转化入口页。剩下的可以分批补。
有哪些工具可以帮你批量生成301规则?
有对照表,下一步就是“翻译”成服务器能认的指令。
1. 在线生成器(推荐给非技术人员)
搜“301重定向规则生成器”,选界面清爽、不用注册的就行。
把Excel里A列和B列复制粘贴进去,选你的服务器类型(Apache/Nginx),点生成——几秒出来一整段可直接用的代码。
适合几百条以内的迁移,不写代码、不装环境,打开网页就能干。
2. Excel公式(推荐给经常处理这类事的运营/编辑)
在表格里加一列C,输入这串:= "Redirect 301 " & A2 & " " & B2(Apache)
或= "rewrite ^" & SUBSTITUTE(A2,"https://old.com","") & "$ " & B2 & " permanent;"(Nginx,需先清洗路径)
下拉填充,复制整列结果,粘贴进配置文件。
比在线工具更可控,尤其当你需要微调某几条规则时。
3. Python脚本(推荐给技术同事或自己能跑简单代码的)
新建一个 gen_redirect.py,用pandas读取CSV,循环拼接字符串,输出.htaccess或Nginx配置片段。
十几行代码,以后每次迁移都能复用。
针对不同服务器,具体规则怎么写?
生成的代码,得放进对的地方才生效。
Apache服务器(常见于虚拟主机、宝塔面板)
规则写在网站根目录的 .htaccess 文件里,格式是:Redirect 301 /old-page.html https://www.newdomain.com/new-page
注意:
- 路径以
/开头,不要带域名(除非跨域); - 新地址尽量用完整URL(含https),避免相对路径跳转出错;
- 确保服务器已启用
mod_alias模块(宝塔默认开启)。
Nginx服务器(常见于云服务器、Docker部署)
规则写在站点配置文件里(如 /etc/nginx/conf.d/your-site.conf 的 server{} 块内),格式是:rewrite ^/old-page.html$ /new-page permanent;
注意:
- 正则开头的
^和结尾的$很关键,防止误匹配/old-page.html?id=1这类参数; - 如果新旧域名不同,用
return 301 https://www.newdomain.com$new_uri;更稳妥; - 修改后必须执行
nginx -t && nginx -s reload才生效。
批量设置后,如何验证和监控效果?
上线≠结束。跳转准不准,得亲手试,还得盯着看。
马上验证(5分钟内做完)
- 打开浏览器无痕窗口,直接访问3–5个你最在意的旧链接(比如首页、爆款文、报名页),看是否秒跳、跳到的页面是否正确;
- 用 Chrome 开发者工具 → Network 标签页,刷新旧链接,确认状态码是
301,且 Response Headers 里的Location值是你填的新地址。
持续监控(第一周重点盯)
- 登录 Google Search Console,进“覆盖率”报告,筛选“排除的网址”,看有没有大量“软404”或“被robots.txt屏蔽”——那可能是你漏配了某些动态URL;
- 在“链接”报告里,定期查“外部链接”指向的还是不是旧URL;
- 如果用了百度统计或GA4,建个自定义事件,追踪从旧域名跳转过来的会话,确认流量没断层。
今天下班前就能执行的具体操作步骤
别等“准备好了”,现在打开电脑,照着做:
- 导出旧链接:登录旧站后台,如果是WordPress,进「All in One SEO」插件 →「Sitemap」→「Export URLs」;不是的话,用 Screaming Frog 免费版爬一次(限制500条够用),导出为CSV;
- 填对照表:在Excel里开两列,A列粘旧URL,B列手动填对应的新URL(先填前20个最高流量的);
- 生成规则:打开 redirect.mirrors.online(国内直连快、无广告),粘贴AB两列,选Apache或Nginx,点生成;
- 部署测试:把生成的代码,复制进宝塔面板的「网站」→「设置」→「配置文件」,或FTP上传覆盖
.htaccess,保存后立刻用无痕窗口试跳; - 提交地图:去 Google Search Console,进新站属性 →「索引」→「网站地图」,提交
sitemap.xml(确保新站已生成)。
做完这五步,你最重要的页面已经安全落地。剩下的,周末抽一小时补完余下的链接,心里就真的踏实了。