站点运营

站点运营:搜尋蜘蛛的URL發現,從预览連結與定时發布的入口谈起

预览連結和定时發布都發生在内容正式登场之前,這個阶段的URL狀態如果没管好,容易产生重复副本、空壳頁和孤儿頁。本文梳理预览頁的noindex處理、發布前後的狀態切換、入列動作以及如何用日誌驗證,帮助站点把URL發現這件事做在流程里。

站点运营

站点运营:搜尋蜘蛛的URL發現,從预览連結與定时發布的入口谈起

做内容站的人多半遇到過這種情况:一篇稿子還在後台改,预览連結却已经被到處轉;或者定时發布定在早上八点,隔天翻日誌,頁面八点零三分就被抓了一次。预览連結和定时發布都發生在内容正式登场之前,這個阶段的 URL 狀態如果没管好,會直接影响搜尋蜘蛛對站点的判断。

预览連結為什么容易被抓到

大多數 CMS 的预览功能會生成一個带随机串的地址,例如 /preview?token=... 或者 /draft/1024?key=...。它的设計目标是“谁能拿到這個地址,谁就能看”,本身不做身份校驗,也不需要登入。問题在于,這類地址经常被複製到群里、邮件、工單系統、协作工具里,而其中一些渠道是公開或半公開的。

  • 预览頁返回 200,正文完整,没有 noindex,也没有 canonical 指向正式地址。
  • 预览頁通常沿用站点模板,带着全站導航和頁脚連結,等于又開了一個入口。
  • 同一篇稿子反复预览,可能产生多個 token 不同的 URL,内容完全相同。

這几條叠在一起,就會出現同一篇文章對應多個可抓取 URL 的局面。它們不是恶意镜像,但對搜尋蜘蛛来说,都是内容一致的候選頁面。

定时發布的几個狀態节点

發布前

如果後台在建立草稿时就分配了正式 URL(很多系統按文章 ID 生成),而這個 URL 在發布前可以訪問,那么它最好返回 404 或 403,而不是 200 加一句“内容准备中”。200 的空壳頁被收錄後,用戶点進来看到空白,体驗很差。

發布瞬間

發布是寫資料库、刷缓存、更新列表、更新 Sitemap 這一串動作。如果列表缓存没刷新,新頁面在栏目頁上找不到入口;如果 Sitemap 是每天凌晨生成的,這次更新就要等到第二天才体現出来。

發布之後

内容上线了却没有進入任何列表、标簽頁、相關推荐,就變成了孤儿頁。搜尋蜘蛛只能靠外鏈或 Sitemap 找到它,發現速度會慢不少。這一点在批量發布时更明顯:一次發二十篇,只有前几篇進了首頁,後面的可能在角落里待很久。

可以落地的處理办法

  1. 预览頁统一加 noindex,並在响應头里加 X-Robots-Tag,避免只寫在模板里被漏掉。
  2. 预览 token 設定有效期,比如 24 小时或者 7 天,過期後返回 410,而不是繼續返回同一份内容。
  3. 预览頁尽量用精简模板,去掉全站導航、相關推荐、评论区的連結,减少額外入口。
  4. 正式 URL 在發布前返回 404,發布後返回 200,狀態切換干净利落。
  5. 發布流程里补一步“入列”動作:寫入栏目列表、更新标簽聚合、刷新 Sitemap 的 lastmod。
  6. 下线内容保留 410 或 301 到同類頁面,不要用 200 的“该内容已刪除”提示頁顶上。

怎么確認有没有問题

最直接的办法是翻服務器日誌,篩選包含 preview、draft、token、key 這類關鍵詞的路径,看請求来自哪些 IP、User-Agent 是什么。如果出現明顯来自搜尋引擎的抓取记錄,說明预览連結已经進入公開鏈路。

另一個观察点是定时發布後的首次抓取時間。连續记錄几次,就能大致判断自家站点在發布後多久被發現。如果某些栏目明顯偏慢,通常是入口不足或者 Sitemap 更新滞後。

预览連結和定时發布都不需要复杂的改造,核心只有一句:内容没准备好之前,別让 URL 以 200 的形式對外存在;内容准备好之後,別忘了给它一個能被走到的入口。

把這两件小事固定成流程的一部分,站点运营里很多“為什么這篇没被發現”的疑問,會少掉一大半。