官网改版、更换建站系统、重新规划栏目结构后,最常见的“暗伤”就是旧链接集体失效:原来被搜索引擎收录、被外部文章引用的页面,一夜间全部变成404。结果是自然流量下滑、历史外链的权重断掉,连抓取内容的AI也读不到旧地址。很多团队改版时只顾着把新站做漂亮,上线后才发现收录接不上。这篇给一套可落地的保收录方案。
理解原理才不会只做表面功夫。搜索引擎和AI抓取器认识的是一个个具体网址,页面内容即使原样搬到新站,只要URL变了,在它们眼里旧URL消失、新URL是陌生页面,需要重新发现和评估。旧URL返回404,等于告诉抓取方“这页没了”,积累的收录和外链关联也随之流失。正确思路不是让旧URL凭空消失,而是明确告诉抓取方和浏览器:这个页面永久搬到了哪个新地址,这就是301重定向的作用。
建映射前必须先拿到尽可能完整的旧URL清单,来源越多越不容易漏:
把这些来源汇总去重,标注每个URL的页面类型(首页/栏目/文章/产品/专题)和访问量,优先保证有流量、有外链、已收录的页面不丢。
映射表是整套方案的核心,建议用表格或结构化文件维护,每行一条旧到新的对应关系,并区分三种情况:
[
{"old": "/news/detail/123.html", "new": "/blog/123", "rule": "one_to_one"},
{"old": "/product/list?cat=2", "new": "/products/software", "rule": "category_merge"},
{"old": "/activity/2019", "new": "", "rule": "gone"}
]映射关系要按“内容相关性”匹配,旧手机页跳到新手机页,而不是所有旧链接一律跳首页——全跳首页会被判定为软404,等于没做。
重定向应在服务端返回“301 Moved Permanently”并带上新地址。以常见的Web服务器为例,精确映射可逐条配置,规律化的栏目调整可用规则批量改写:
# 单条精确301
location = /news/detail/123.html { return 301 /blog/123; }
# 整栏目按规则迁移:/news/detail/(数字).html -> /blog/$1
location ~ ^/news/detail/(\d+)\.html$ { return 301 /blog/$1; }三个要点:用301表示永久迁移,不要误用302临时跳转;避免A跳B、B再跳C的多跳链,尽量一跳到最终地址,减少损耗和等待;重定向规则上线前在测试环境逐条验证状态码和目标地址。
不是每个旧页都有新页对应。处理原则是分层兜底:能找到相关新栏目的跳到最相关页面;内容确实永久下线的返回410;其余返回404,但要配一个有用的自定义404页,提供搜索框、热门栏目、返回首页入口,帮真实用户和抓取方继续找到内容。切忌把不存在的页面也返回200状态码塞一份首页内容,这是典型软404,会被当作低质页面处理。
301上线后仍可能因为后续发版、栏目调整产生新死链,需要把巡检做成固定动作。定时抓取站内全部链接,检查每个URL的状态码,把404/410/异常重定向、以及指向这些地址的内链位置一并报出:
import urllib.request, urllib.error
def check_status(url):
try:
req = urllib.request.Request(url, method="HEAD")
with urllib.request.urlopen(req, timeout=10) as resp:
return resp.status, resp.geturl() # 最终状态与落地地址
except urllib.error.HTTPError as e:
return e.code, url
# 遍历站点URL清单,输出非200及多跳结果,形成回归报告
for u in site_urls:
code, final = check_status(u)
if code != 200 or final != u:
report.append((u, code, final))建议改版上线后第一周每天巡检一次,之后改为每周;每次新增栏目或批量发文后跑一遍,把发现的死链补进映射表或修正内链,形成闭环。
生成式AI抓取内容同样依赖稳定、可访问的网址。除了301,还要注意:新站保持清晰的站内结构和站点地图并主动更新;重要内容给稳定、语义化、不再频繁变动的URL;保证抓取器访问时返回与普通用户一致的状态码,不做异常拦截;旧内容迁移后正文内链同步更新到新地址,减少站内跳转。旧URL通过301把“身份”过渡给新URL,新URL再用清晰结构被重新认识,收录和被引用的概率才能接回来。
建议把“保收录”当作改版工程的一条独立流水线:上线前产出全量旧URL清单和301映射表并评审;发布时服务端规则与新站同步上线;上线后用脚本定时巡检状态码和重定向落地、输出回归报告;映射表、巡检脚本、报告纳入代码库管理,后续任何URL调整都先更新映射再发布。这套做法对企业官网、资讯站、商城等任何重视长期自然流量和AI可引用性的站点都适用。
Q:旧内容不要了,还需要做301吗?
A:内容永久删除且无相关页面可承接时用410明确告知移除;只有当内容有对应新位置时才做301,不要为了“保权重”把无关页面乱跳。
Q:301配置后多久能恢复收录?
A:抓取方需要重新抓取旧URL、识别301并把信号过渡到新地址,周期并不固定,因此更要保证映射准确、一跳到位并持续更新站点地图。
Q:能不能用前端跳转代替服务端301?
A:不建议。前端脚本跳转不返回标准301状态码,抓取方未必执行,最稳妥的是在服务端返回301和新地址。
改版保收录的本质,是给每个旧地址一个明确、永久、相关的去向,并持续验证没有链接走丢。一张映射表解决“搬到哪”,一轮巡检解决“有没有漏”,把这两件事工程化,收录、外链和AI可引用性就能平稳过渡到新站。本文为前端与服务端工程实践分享,具体实现以自身站点环境为准。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。