网站收录

站内冒出大量陌生 URL 并被收录:从切断发现路径到收敛索引的处理顺序

发现站内多出大量陌生 URL 且已被收录时,先别急着批量删除。本文按现象分类、切断发现路径、修正状态码、收敛已有索引、追查注入入口的顺序梳理处理流程,并列出几个容易把问题放大的操作,尽量在清理垃圾页面的同时不误伤正常内容。

网站收录

站内冒出大量陌生 URL 并被收录:从切断发现路径到收敛索引的处理顺序

先确认现象:被收录的到底是什么

发现索引里出现陌生 URL,先别急着批量删。用 站内查询、抓取日志、服务器文件列表三处交叉比对,把多出来的 URL 大致分成三类:

  • 服务器上真实存在、能正常打开的页面,常见于上传目录、缓存目录、临时文件被写入内容;
  • 服务器上并不存在,但访问返回 200 的页面,多半是伪静态规则或程序把不存在的路径兜底成了正常页面;
  • 正常页面本身被注入了外链或隐藏内容,页面还在,只是内容被改。

这三类处理方式不一样。第一类要删文件并封住目录执行权限,第二类要先改回正确的状态码,第三类要清理模板和数据库里的注入内容。如果混在一起统一删 URL,往往会漏掉真正的入口,过一阵又长出来。

第一步:切断发现路径,先止住增量

在清理完成之前,最要紧的是让爬虫别再发现新页面。

  • 对确定是垃圾页面的目录,先用 robots.txt 的 Disallow 挡住抓取,这属于临时止血,不是移除手段;
  • 检查 Sitemap 是否被自动生成了这些 URL,如果有,先修正生成逻辑,或临时替换成干净版本;
  • 检查内链:注入内容通常会互相链接,形成一小片“站中站”。找到这片区域的入口页,比逐个删页面更有效。
robots.txt 只能阻止新的抓取,已经进入索引的 URL 不会因为屏蔽而自动消失,这两件事需要分开处理。

第二步:让这些 URL 返回正确的状态码

删掉文件、清理模板之后,确认访问返回的是 404 还是 410。

  • 确定不会再有的页面,410 语义更明确,但 404 同样有效,不必为了选哪个反复纠结;
  • 最忌讳的是页面不存在却返回 200,或者统一 301 跳到首页。前者会让垃圾页长期留在索引里,后者容易被当作无效跳转处理,问题并没有解决;
  • 如果站点改过伪静态规则或做了兜底路由,一定单独验证一次随机不存在的 URL 返回什么状态码。

第三步:处理已经被收录的部分

索引里的旧 URL 消失需要时间,具体多久没有固定答案,取决于重新抓取与重新评估的节奏。

  1. 确认页面已返回 404 或 410,并且站内不再有链接指向它;
  2. 可以用站点管理后台的移除工具提交,作为临时手段,通常只在一定期限内有效;
  3. 如果页面必须保留但内容不想要,用 noindex 而不是删 URL,避免影响其他正常路径;
  4. 观察抓取日志里这些 URL 的访问频次是否下降,作为清理是否生效的参考。

第四步:查清注入入口,否则会复发

  • CMS、插件、上传组件是否存在已知漏洞;
  • 上传目录是否允许执行脚本;
  • 模板文件、内容数据表、被写入的静态文件,是否有改动时间高度集中的痕迹;
  • 站点是否存在批量生成的动态路由,比如任意参数都能返回 200 内容。

只删页面、不补入口,通常一两周内会再次出现同类 URL。

几个不建议做的操作

  • 全站 robots.txt 屏蔽:正常页面也会停止被抓取,恢复后需要重新积累;
  • 全站 noindex:同样会波及正常页面,回滚后重新进入索引也需要时间;
  • 把所有多出来的 URL 统一 301 到首页:容易被视为无效跳转,垃圾页本身并没有被解决;
  • 为了“清干净”把疑似目录整个删掉:先按目录分类,再决定删哪些。

清理后的监控

收尾阶段做三件事就够了:定期用站内查询抽查看垃圾 URL 是否减少,对比 Sitemap 与服务器真实页面列表,观察抓取日志中陌生目录是否还有新增。清理过程中保留一份 URL 清单和对应的处理动作,下次再遇到类似情况可以直接对照,不必从零排查。