做内容站的人多半遇到过这种情况:一篇稿子还在后台改,预览链接却已经被到处转;或者定时发布定在早上八点,隔天翻日志,页面八点零三分就被抓了一次。预览链接和定时发布都发生在内容正式登场之前,这个阶段的 URL 状态如果没管好,会直接影响搜索蜘蛛对站点的判断。
预览链接为什么容易被抓到
大多数 CMS 的预览功能会生成一个带随机串的地址,例如 /preview?token=... 或者 /draft/1024?key=...。它的设计目标是“谁能拿到这个地址,谁就能看”,本身不做身份校验,也不需要登录。问题在于,这类地址经常被复制到群里、邮件、工单系统、协作工具里,而其中一些渠道是公开或半公开的。
- 预览页返回 200,正文完整,没有 noindex,也没有 canonical 指向正式地址。
- 预览页通常沿用站点模板,带着全站导航和页脚链接,等于又开了一个入口。
- 同一篇稿子反复预览,可能产生多个 token 不同的 URL,内容完全相同。
这几条叠在一起,就会出现同一篇文章对应多个可抓取 URL 的局面。它们不是恶意镜像,但对搜索蜘蛛来说,都是内容一致的候选页面。
定时发布的几个状态节点
发布前
如果后台在创建草稿时就分配了正式 URL(很多系统按文章 ID 生成),而这个 URL 在发布前可以访问,那么它最好返回 404 或 403,而不是 200 加一句“内容准备中”。200 的空壳页被收录后,用户点进来看到空白,体验很差。
发布瞬间
发布是写数据库、刷缓存、更新列表、更新 Sitemap 这一串动作。如果列表缓存没刷新,新页面在栏目页上找不到入口;如果 Sitemap 是每天凌晨生成的,这次更新就要等到第二天才体现出来。
发布之后
内容上线了却没有进入任何列表、标签页、相关推荐,就变成了孤儿页。搜索蜘蛛只能靠外链或 Sitemap 找到它,发现速度会慢不少。这一点在批量发布时更明显:一次发二十篇,只有前几篇进了首页,后面的可能在角落里待很久。
可以落地的处理办法
- 预览页统一加 noindex,并在响应头里加 X-Robots-Tag,避免只写在模板里被漏掉。
- 预览 token 设置有效期,比如 24 小时或者 7 天,过期后返回 410,而不是继续返回同一份内容。
- 预览页尽量用精简模板,去掉全站导航、相关推荐、评论区的链接,减少额外入口。
- 正式 URL 在发布前返回 404,发布后返回 200,状态切换干净利落。
- 发布流程里补一步“入列”动作:写入栏目列表、更新标签聚合、刷新 Sitemap 的 lastmod。
- 下线内容保留 410 或 301 到同类页面,不要用 200 的“该内容已删除”提示页顶上。
怎么确认有没有问题
最直接的办法是翻服务器日志,筛选包含 preview、draft、token、key 这类关键词的路径,看请求来自哪些 IP、User-Agent 是什么。如果出现明显来自搜索引擎的抓取记录,说明预览链接已经进入公开链路。
另一个观察点是定时发布后的首次抓取时间。连续记录几次,就能大致判断自家站点在发布后多久被发现。如果某些栏目明显偏慢,通常是入口不足或者 Sitemap 更新滞后。
预览链接和定时发布都不需要复杂的改造,核心只有一句:内容没准备好之前,别让 URL 以 200 的形式对外存在;内容准备好之后,别忘了给它一个能被走到的入口。
把这两件小事固定成流程的一部分,站点运营里很多“为什么这篇没被发现”的疑问,会少掉一大半。