先给结论:如果旧地址没有完全等价的新目标,不要用 robots.txt 的 Disallow 去“清理”这些 URL,而应优先让旧地址返回 301 到一个最接近且内容相关的有效页面;只有当旧地址属于整类无对应内容的目录、参数或临时活动页,且你接受它们从搜索结果中逐步消失时,才用 robots.txt 屏蔽抓取。判断前提是:这些旧地址是否仍有外链、是否仍可能被用户直接访问、以及新站是否已经存在可承接的同类页面。缺少任一前提,结论就可能失效。
很多人把迁移后的旧地址当成“垃圾”,第一反应是写一条 Disallow 挡住。但 robots.txt 只表达“不要抓取”,它并不等于“从索引中移除”。如果旧 URL 已经被收录,抓取被阻止后,搜索引擎可能仍保留旧记录,只是无法读取新状态,反而让旧地址在结果里停留更久。更麻烦的是,屏蔽抓取后你无法通过页面上的 canonical 或 301 传递信号,等于主动切断了迁移线索。
因此,迁移中处理旧地址的第一步不是写规则,而是分类:哪些旧地址有等价新页,哪些只有近似新页,哪些完全没有对应内容。三类地址的处理方式不同,robots.txt 只适合最后一类中的一部分。
这是默认选择,适用于旧地址仍有搜索流量、外链或用户可能访问的情况。所谓“最接近”不要求主题完全一致,但必须满足两个条件:新页面能回应用户从旧地址带来的意图,且不是把大量不相关旧地址全部指向首页。把几十个旧产品页全部 301 到首页,通常会被视为软 404,传递效果有限。
实际操作:先导出旧站有外链和有点击的 URL,再逐一映射到新站最相关页面。映射完成后抽查若干旧地址,确认返回 301 且目标页可正常访问。这个动作的结果会直接影响下一步:如果映射表里超过一定比例的旧地址只能指向首页,说明新站内容承接不足,应先补内容或保留部分旧页,而不是继续加 robots.txt。
当旧地址确实没有任何相关内容、也没有值得保留的外链时,返回 410 比用 robots.txt 屏蔽更干净。410 明确表示内容已永久删除,搜索引擎可以据此逐步移除索引。404 也有类似效果,只是信号稍弱。前提是你已确认这些地址没有重要外链,否则会浪费本可传递的链接价值。
注意:410 和 robots.txt 屏蔽可以同时存在,但不要用 robots.txt 去“加速”移除。抓取被阻止后,搜索引擎可能无法及时看到 410 状态,移除反而变慢。所以正确顺序是:先让旧地址返回正确状态码,再决定是否需要对特定目录做抓取限制。
只有当你面对的是成批的、结构化的、确认无对应内容的 URL 时,才考虑用 robots.txt 屏蔽。例如旧站的站内搜索结果页、排序参数页、已下线的临时活动目录。这类 URL 数量大、单个无外链、也没有用户直接访问需求,屏蔽抓取可以节省抓取预算。
写法上,只需在 robots.txt 中针对对应路径写 Disallow,并确认没有误伤新站仍需抓取的目录。写完后的验证动作是:用搜索引擎的 robots.txt 测试工具或抓取模拟功能,确认目标 URL 被判定为禁止抓取,同时确认新站核心目录未被误封。如果测试发现误封,应立即回滚该条规则,而不是继续追加 Allow 去修补。
假设旧站有一批产品页,新站把它们合并成了一个新的分类页。你决定把旧产品页全部 301 到该分类页,同时用 robots.txt 屏蔽旧产品目录。这个组合看似双保险,实际会让 301 信号无法被读取:搜索引擎被禁止抓取旧 URL,就看不到 301,旧 URL 可能继续以旧标题出现在结果中。此时正确做法是只保留 301,不加 Disallow。这个反例说明:只要旧地址还有迁移信号要传递,robots.txt 就不该介入。
建议按以下顺序推进,每一步的结果决定下一步:
需要提醒的是,抓取量下降或某个目录请求归零,不能单独证明处理正确。它也可能是搜索引擎已经完成移除、抓取预算重新分配,或你误封了仍有价值的目录。判断依据应结合状态码、外链变化和索引状态一起看。robots.txt 的抓取限制不等于可靠的索引移除,站点地图也不保证收录,这两点在迁移场景中尤其容易混淆。
如果你已经尝试过 301 和状态码处理,但旧地址仍在结果中出现,先检查是否有一条 Disallow 正好挡住了这些旧 URL。移除那条规则,让搜索引擎重新抓到 301 或 410,通常比继续追加 robots.txt 规则更有效。