做内容站的人多半遇到過這種情况:一篇稿子還在後台改,预览連結却已经被到處轉;或者定时發布定在早上八点,隔天翻日誌,頁面八点零三分就被抓了一次。预览連結和定时發布都發生在内容正式登场之前,這個阶段的 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 的形式對外存在;内容准备好之後,別忘了给它一個能被走到的入口。
把這两件小事固定成流程的一部分,站点运营里很多“為什么這篇没被發現”的疑問,會少掉一大半。