删除栏目时,最容易被漏掉的不是正文页,而是那些不靠导航暴露的入口:面包屑、站内搜索联想、标签聚合、相关推荐、XML站点地图、外链和结构化数据。只在后台删掉栏目和它的页面,往往留下大量指向404的链接。要一次找齐,应当先用站点爬虫和服务器日志建立“已知入口清单”,再针对模板、站内检索、外链三个方向分别补查,而不是只依赖一次全站抓取。
假设一个站点只删一个栏目下的三篇文章,手动改掉主导航和该栏目的列表页,用爬虫复查时通常不会发现异常,因为样本小、入口集中。但若栏目下有几百个页面,并且被多个模板调用,情况就不同:栏目页可能出现在首页的“编辑推荐”、文章页的“相关栏目”、标签页的“同主题聚合”里,这些位置未必在导航结构里,爬虫若不触发对应模板也不一定抓到。
把这个矛盾拆开,通常有两种解释。第一种是入口确实只存在于被删除的栏目内部,那么删除后自然消失,剩下的只是少量残留链接。第二种是入口由多个独立模板或数据源生成,比如相关推荐读取的是标签而非栏目,那么即使栏目没了,这些链接仍会继续输出。两种解释对应的处理量差别很大,不能凭一次抓取就下结论。
要区分上述两种情况,可以收集三类证据。第一类是全站抓取结果中指向待删URL的内链来源页,看这些来源页属于哪些模板;如果来源页集中在栏目自身,说明入口基本封闭;如果来源页分散在文章页、标签页、首页,说明存在多处独立调用。
第二类是服务器访问日志中针对这些URL的请求来源。若请求主要来自站内爬虫和少量直接访问,说明外部入口少;若出现较多来自其他站点的跳转,说明还有外链需要处理。第三类是站内搜索和自动补全数据,看栏目名或相关词是否仍被检索并返回已删内容,这一项常被忽略,因为它不体现在静态链接里。
一个可操作的动作是:删除前先导出待删URL清单,删除后逐项在站内搜索框、标签页和相关推荐模块中检索。若某项仍能返回已删页面,说明该模块的数据源没有同步清理,下一步要改的是数据源而不是页面本身。这个动作的结果直接影响后续工作量——如果只有搜索联想残留,改词库即可;如果标签聚合仍在输出,则要处理标签与内容的关联关系。
模板线:检查面包屑、侧边栏、页脚、相关推荐、上一篇/下一篇、栏目列表分页。这些位置的共同特点是数据来自数据库查询,删除栏目后若查询条件未更新,仍可能拼出失效链接。逐个模板查看其取数逻辑,比只看页面渲染结果更可靠。
检索线:站内搜索索引、自动补全词库、标签词表、聚合页规则。栏目删除后,这些索引若未重建,用户仍可能搜到已删内容。需要确认索引更新是否随内容删除自动触发,若不是,则要安排一次手动重建。
外链线:其他站点的跳转、社交平台分享记录、合作方页面上的链接。这部分无法通过站内工具完全发现,需要结合日志中的跳转来源和外部工具的反向链接数据交叉比对。发现后能改则改,不能改的用301指向最相关的替代页面。
如果站点规模很小,所有入口都由同一套模板生成,那么手动检查导航和列表页可能就够了,不必建立完整清单。反之,若站点存在多套主题模板、多个语言版本或大量用户生成内容,入口来源会成倍增加,此时只靠一次抓取容易漏。另一个边界是:若删除的栏目本身没有独立URL,只是导航里的一个分组,那么影响面主要是导航链接,处理方式要简单得多。
还需要注意,删除前后做对比时,流量或抓取量的变化不能单独证明处理是否到位,因为搜索需求本身会随季节波动,数据采集口径也可能不同。比较时最好固定同一批URL和同一时间窗口,并记录哪些变化来自删除动作、哪些来自外部环境。
完成一次删除后,把本次实际发现的入口类型整理成清单,标注哪些来自模板、哪些来自检索、哪些来自外链。下次删除同类栏目时,先按清单逐项核对,再决定是否需要重新抓取。这样做的价值在于:入口的分布规律往往比单次删除结果更稳定,积累几次后,排查时间会明显缩短。
最后要确认的是,所有失效入口要么被移除,要么被指向仍然有效的替代页面,并且替代关系在服务器端和站内链接中保持一致。完成这一步后,再观察日志中对该批URL的请求是否趋于减少,以此判断清理是否还有遗漏。