很多站点运营把注意力放在已发布内容的抓取和收录上,却忽略了更早的一个环节:内容还没正式上线时,它的地址是否已经能被外部访问。草稿、预览、定时发布中的页面一旦被搜索蜘蛛提前抓到,轻则让用户看到半成品,重则让同一篇内容出现两个地址互相分散权重,后期还要花时间做合并和重定向。
草稿页常见的几种“提前曝光”路径
- 预览链接没有访问限制:为了给同事或客户看效果,后台生成了一个带随机串的预览地址。看起来很难猜,但一旦被分享到群里、贴进文档或出现在外部工具里,就有可能被爬虫顺着抓到。
- 测试域名可以被公网访问:开发环境用了和正式站相似的结构,只是换了域名或端口,没有加访问验证,蜘蛛进来后照样能抓完整套内容。
- CMS 的默认草稿地址:部分系统会给未发布内容分配类似 ?p=数字 或 /draft/xxx 的固定地址,只要返回 200 状态码,就等于公开。
- 定时发布提前可访问:设置了发布时间,但内容在前台已经可以通过直链打开,只是没出现在列表里。
- 草稿被写进 sitemap:生成 sitemap 的逻辑没有过滤状态,把未发布地址一起交了出去。
一次可执行的自查清单
- 打开后台任意一篇草稿,复制它的前台地址,用未登录的浏览器或无痕窗口访问,看是否返回 200。
- 检查测试环境、预发布环境是否对公网开放,域名解析是否指向了外部可访问的服务器。
- 查看 sitemap 文件,确认里面没有状态不是“已发布”的地址。
- 在服务器日志里检索草稿路径特征(如 draft、preview、p=),看是否有搜索引擎 IP 的访问记录。
- 检查预览功能的链接有效期,是否设置了几小时或几天后自动失效。
- 确认定时发布的内容,在时间到达之前前台无法通过直链访问。
处理方式上的取舍
发现草稿被访问后,不建议只依赖 robots.txt 去挡。robots 只是抓取约定,被挡的地址如果已经从别处获得外链,仍然可能出现在结果里,而且你无法看到具体是哪条地址被访问。更稳妥的做法是让草稿地址在源头就不存在:预览走后端鉴权,未登录一律返回 404 或跳转登录页;测试环境整体加一层访问验证。
对于确实需要临时公开的预览页,可以加上 noindex 标记,并配合较短的链接有效期,形成双保险。已经泄露并产生了访问记录的地址,再视情况决定是直接下线返回 410,还是保留并重定向到正式地址。
把控制点前移到发布流程
与其事后清理,不如在流程上约定:预览地址统一走鉴权、有效期不超过 24 小时、sitemap 生成前过滤状态、上线前用无痕窗口做一次前台直链检查。这些动作单个都不复杂,但需要固定成发布前的检查项,否则很容易在赶进度时被跳过。
内容管理的边界不只在于“发什么”,也在于“什么时候能被看到”。把未发布内容的可见范围收干净,后续的抓取和收录才有稳定的基础。