很多站点的抓取问题,并不出在正式站上,而是出在那些“还没准备好”的页面上:测试域名、预览链接、临时上传目录、改版时留下的旧站。它们通常没有任何内链指向,但只要有一个人把链接发到公开的地方,或者服务器根本没做隔离,蜘蛛迟早会顺着找到。
常见的泄露入口
- 测试域名或测试站:例如 test.example.com、dev 前缀目录,内容和正式站高度相似。
- 预览链接:CMS 生成的 ?preview=xxx 之类地址,或者短时效的分享链接,被复制进聊天工具、文档、工单里。
- 临时目录与上传残留:/tmp、按日期堆积的上传目录、编辑器导出的静态文件,没有任何访问保护。
- 备份与数据文件:压缩包、SQL 导出、日志文件直接躺在网站根目录下。
- 改版后的旧目录:新站上线了,旧目录还留在服务器上没删,也没做跳转。
被抓走之后会有什么麻烦
半成品页面本身可能没什么价值,但副作用不小:
- 和正式页内容重复,让蜘蛛难以判断该保留哪个版本;
- 旧价格、旧活动、旧联系方式被抓取后,可能在结果里长期存在,访客看到的是过期信息;
- 抓取预算被这些页面消耗掉,核心栏目的更新反而排到后面;
- 如果预览页或临时目录里带有后台入口、调试信息,还可能暴露不该公开的内容。
判断标准很简单:这个地址如果被陌生人看到,是否会造成误解或风险?答案是“会”,就不该让它处在可被公开访问的状态。
隔离的几种做法
访问层先挡住
测试环境优先用内网访问、HTTP 基本认证或 IP 白名单,而不是指望 robots.txt。robots.txt 约束的是遵守规则的抓取,挡不住别人手动打开,也挡不住已经抓走的快照。
再补一层索引指令
确实需要公开访问的预览环境,比如给客户看的版本,可以在响应头加 X-Robots-Tag: noindex,比只写在页面 meta 里更稳妥;同时确认它没有出现在站点地图、内链和站内搜索里。
预览链接做成一次性的
带 token 的预览地址最好设置有效期,用完整就失效;不要用可枚举的连续 ID,也不要把大量预览链接堆在同一个页面上。
上线时同步清理
旧目录、旧子域、备份文件在新站上线当天就该处理掉。需要保留的做 301,不需要的直接删除或返回 410,别让它们长期挂着。
上线前后的自查清单
- 站点地图和主要内链里,有没有混进测试域名或预览地址;
- 服务器根目录下是否还存在压缩包、SQL、日志之类的文件;
- 旧站目录是否已删除或做了跳转;
- CDN 缓存里是否还留着旧版本页面;
- 在服务器日志里搜一下测试域名、preview、tmp 等关键词,看有没有被抓取的记录。
已经被抓了怎么处理
先确认现状,看看这个地址是否真的出现在结果里。仍可访问的页面,先让它返回 404 或 410,或者在响应头加 noindex;确实需要保留内容的,做 301 指向正式页。如果页面里含敏感信息,处理优先级要提到最前面。做完这些,再观察一段时间的抓取日志,确认蜘蛛不再频繁回访。
这类问题大多不是技术难题,而是流程问题:发布流程里多问一句“这个地址能不能被公开访问”,就能省掉后面很多清理工作。