很多站点的抓取和收录问题,并不出在正式文章上,而是出在那些“还没准备好见人”的地址上。编辑器生成的草稿预览链接、测试环境的镜像站、上传后自动生成的附件页,往往没有加任何访问限制。蜘蛛顺着一条外链爬进去,就会把一个半成品当成正式内容处理。这类页面通常没有导航、没有内链、内容残缺,被抓走之后既影响整站质量判断,也容易和正式页形成重复。
这些地址是怎么漏出去的
先看清泄露路径,再谈处理方式。常见的几种情况:
- 预览链接本身可访问,且带有一段可被猜到的 ID 或短随机串,被分享到群聊、工单系统后进入爬虫队列;
- 测试域名解析到了公网,robots.txt 却直接照抄正式站配置,等于告诉蜘蛛可以随便抓;
- 图片、PDF、压缩包上传后由 CMS 自动生成独立附件页,又被媒体库、搜索结果页或站点地图链接出来;
- 历史改版留下的静态目录还躺在服务器上,只是首页入口被删掉了,文件本身仍然在;
- 筛选、排序参数生成的临时地址被当成正常页面输出,模板里没有做任何标记。
自查步骤
- 站内检索抽查。用 site: 配合 inurl: 组合查询,例如 inurl:draft、inurl:preview、inurl:test、inurl:tmp、inurl:old,看是否有非预期地址已经出现在结果里。同时对比 site: 的页面总量与自己统计的正式页数量,差距过大就说明有东西漏在外面。
- 翻访问日志。过滤出状态码为 200 但路径明显异常的请求,重点看 /uploads/、/tmp/、/backup/、/demo/ 这类目录。日志里出现过的路径,往往就是蜘蛛已经走过的路径。
- 测试预览功能。退出后台登录状态,用无痕窗口打开一条预览链接。如果能正常显示内容,说明这扇门对所有访客都是敞开的。
- 检查测试域名。确认测试环境是否有独立的 robots.txt,是否配置了基本的访问认证。测试站和正式站共用同一套配置、同一套数据库,是很多问题的源头。
- 梳理附件与临时页。看媒体库是否会为每个文件生成独立页面,看筛选、排序参数是否会生成可访问的新地址。这些页面大多没有运营价值,却会成倍增加被抓取的地址数量。
处理方式与优先级
处理原则很简单:能删的删,删不掉的挡,挡住之后再谈引导。
- 已经没有价值的目录和文件直接移除,返回 404 或 410,比留在原地更干净;
- 仍需保留的(内部预览、测试站等),用访问认证挡在外面。401、403 比写进 robots.txt 更彻底,因为 robots.txt 只能约束守规矩的爬虫,页面本身依然可以被外链引用;
- 已经出现在结果里、且确实不该公开的地址,如果内容已迁移到正式页,用 301 指向新地址;如果内容整体废弃,用 410 明确告知;
- 在 robots.txt 里统一屏蔽 /draft/、/preview/、/tmp/ 等目录,可以作为补充手段,但不要把它当成唯一防线;
- 正式站与测试站使用不同域名、不同配置、不同数据库,避免一次误操作把草稿推到线上。
把它变成日常习惯
这类问题很难一次性根治,因为新的预览链接每天都在产生。可以固化几个小动作:给预览链接设置有效期;发布前确认文章地址是否被带参数分享出去;每月用站内检索和访问日志各抽查一次;改版时列一份旧目录清单,逐条确认是保留、跳转还是删除。
蜘蛛不会分辨“这是草稿”还是“这是正文”,它只看到你的服务器返回了 200。对半成品地址的每一次疏忽,都会变成一次低质量抓取。