结论先行:如果被删栏目有独立可访问的列表页,优先用服务器访问日志和站内链接抓取来反查入口;如果它只是模板拼出来的虚拟列表、没有独立 URL,则只能从导航、面包屑、聚合模块和站内搜索配置入手。前者能给出较完整的证据链,后者依赖人工盘点,漏项风险更高,适合栏目流量极低、入口数量可控的情况。
这一步决定后面用哪种方法。打开该栏目的第一页,看地址栏是否出现一个稳定、可被外部引用的 URL,例如 /news/ 或 /category/tech/。如果能直接访问并返回正常内容,说明它是有独立地址的真实页面,所有指向它的链接都可以被记录和检索。如果它只是首页或某个父级页面里按条件筛出来的区块,地址会随筛选参数变化甚至不变化,那么它更像一个视图而非独立页面。
两种情况下“入口”的含义不同。有独立 URL 时,入口是任何带 href 指向它的链接,包括导航、正文推荐、侧栏、页脚、其他栏目页和外部站点。没有独立 URL 时,入口是生成这个视图的模板位置,例如导航项、面包屑规则、相关阅读模块、标签聚合页。前者可以靠数据找全,后者只能靠改模板前逐项核对。
先导出最近一段时间的服务器访问日志,筛选出请求该栏目 URL 的记录,按来源页面或来源参数归组。这一步能暴露真实用户和爬虫实际走过的路径,而不只是你记得的路径。接着用站内抓取工具从首页出发爬一遍,把指向该 URL 的内链列出来。两份清单对照,日志里有、抓取里没有的,往往是需要登录、需要点击交互或藏在表单提交后的入口;抓取里有、日志里没有的,可能是近期才加上、还没被访问到的新入口。
这里要提醒一个反例:访问日志中该栏目的请求量突然归零,并不能单独证明入口已经删干净。缓存命中、日志采样、CDN 回源策略变化、爬虫抓取频率下降,都可能造成同样的现象。要先把这些解释排除,再下“入口已清”的结论。
实际操作上,可以先做一个小动作:把该栏目 URL 加一条临时重定向到最接近的上级栏目,然后观察日志里 301 的命中来源。命中来源就是仍然在引用旧地址的入口。这个动作的结果直接决定下一步——如果命中集中在导航和页脚,说明模板级入口没改;如果集中在几篇旧文章正文,说明内容级入口需要单独处理。
虚拟列表没有可抓取的地址,抓取工具帮不上忙,只能人工过一遍会渲染它的位置。常见位置包括主导航、移动端底部栏、面包屑生成规则、首页或父栏目页的推荐区块、标签页、站内搜索的默认分类、RSS 或 sitemap 生成逻辑。每一项都要打开对应模板或配置,确认删除栏目后这里会渲染成什么:是整块消失、留一个空标题、还是回退到默认分类。
这种做法的代价是容易漏。适合的条件是入口数量少、栏目本身几乎没有自然流量、且你能在一个改动窗口内完成全部核对。如果栏目曾被大量外部引用,或者站内搜索把它列为默认筛选项,人工盘点就不够,应改回上一种方法,先给它一个可访问地址再反查。
保留一个空栏目并返回 410,和直接删除模板、让入口自然失效,是两条不同的路。前者保留了可观测的地址,后续还能从日志里发现残留入口,代价是站内会短暂出现空列表或错误页。后者更干净,但一旦有入口没清掉,用户会直接撞上 404,而你缺少一个集中观测点。
选择条件可以这样看:如果这个栏目过去有稳定外链或搜索流量,保留地址并做重定向更稳妥,因为外部入口你无法逐个联系修改。如果它从未被外部引用、只是内部试验性分类,直接删模板、同时清掉站内入口,代价更小。两种做法都不承诺固定见效时间,判断依据应是入口能否被完整枚举,而不是删得快不快。
无论用哪种方法,最后都要把找到的入口按“模板级、内容级、外部级”分开。模板级入口改一次就影响全站,内容级入口需要逐篇编辑,外部级入口只能靠重定向承接。先改模板级,再批量处理内容级,最后为无法修改的外部入口保留重定向。改完后重新导出一次日志,与改动前的清单对比;如果仍有旧地址被请求,来源就是下一轮要处理的入口。比较前后数据时要留意季节和搜索需求本身的变化,避免把自然波动当成改动效果。