站点运营

站点运营:预览頁與測試目錄自查,別让半成品頁面漏進抓取范围

预览頁、草稿頁和測試目錄常常藏在主域名下,没有導航入口却能被外部訪問。本文梳理它們常见的泄露来源,以及對重复内容和用戶体驗的影响,並给出一份可执行的自查清單和预览环境隔离做法,帮站点把半成品頁面挡在抓取范围之外。

站点运营

站点运营:预览頁與測試目錄自查,別让半成品頁面漏進抓取范围

做站点运营的人大多遇到過這種情况:某天在抓取日誌里看到一個陌生地址,点開一看,是半年前開發时留下的測試頁,或者編輯還没寫完的草稿。這類頁面平时没人訪問,却可能躺在主域名下面,静静等着被外部連結、sitemap 或站内某個错誤連結带到蜘蛛面前。

预览頁通常從哪些地方漏出去

预览和測試頁面很少是故意放出去的,多數是流程上的顺手操作留下的痕迹:

  • CMS 自带的预览功能,地址形如 ?preview=1/preview/xxx,只要知道連結就能打開,不校驗登入狀態。
  • 編輯器自動儲存的草稿被意外设為公開,栏目列表里看不到,但 URL 可以訪問。
  • 開發同学為了图方便,把 test.htmldemo/new/ 這類目錄直接传到網站根目錄。
  • 改版时把舊站整站複製到 /old/ 或子目錄,上线後忘了删。
  • 資料库备份、压缩包、編輯器临时文件(.bak.swp.zip)留在了可訪問目錄里。

這些問题單獨看都不算大,但它們的共同点是:没有導航入口,也没有被纳入日常检查,所以往往存在很久才被發現。

漏出去之後會带来什么麻烦

比較直接的影响有三類。一是内容重复:測試頁常常是正式頁面的複製品,标题和正文几乎一样,两個地址同时存在會让搜尋引擎难以判断哪個是正式版本。二是浪費抓取资源:蜘蛛来過一次没價值的頁面,就少了一次訪問有效内容的机會。三是用戶体驗受损,訪客從外鏈或搜尋结果点進来,看到的是没配图、没排版、寫着「測試」两個字的半成品。

判断标准很简單:這個地址如果被陌生人看到,你是否愿意為它的内容负责?如果答案是否定的,它就不该出現在公開可訪問的位置。

一份可执行的自查清單

  1. 用服務器或 CDN 日誌,筛出最近一個月内被訪問過的、不在導航和 sitemap 里的地址。
  2. 检查根目錄和常见子目錄,看是否存在 test、demo、bak、old、tmp 這類命名的文件或文件夹。
  3. 抽几個 CMS 预览地址,登出登入後再打開,確認是否仍會返回内容。
  4. 检查編輯角色權限,確認「草稿」「待审核」狀態的文章不會生成公開可訪問的静態頁。
  5. 確認备份文件、日誌文件、配置文件不在 Web 可訪問目錄内。

把预览环境隔离開

比起事後清理,更省事的做法是從源头隔离:

  • 预览站放到獨立子域名,並在该子域名的 robots.txt 中整体禁止抓取,同时加上 HTTP 基础認證。
  • 必须放在主域名下的预览,用服務器規則限制来源 IP 或校驗登入 Cookie,未通過时直接返回 403。
  • 開發目錄统一放在内網或本地,通過反向代理訪問,不要直接传到生产站点目錄。
  • 發布流程里加一步比對:上线前對照目錄清單,確認没有多出計划外的文件。

已经漏出去了怎么办

如果確認某個半成品頁面已经能被外部訪問,處理顺序建议是:先让頁面返回 noindex,並且保持頁面本身可以正常訪問一段時間,让蜘蛛有机會讀到這個标记;之後再决定是改成 301 跳到正式頁面,還是直接刪除。需要注意两点:用 robots.txt 屏蔽抓取,蜘蛛就讀不到 noindex;用 401 或 403 挡住訪問,同样讀不到。想让頁面登出索引,前提是蜘蛛進得去、看得到标记。

另外,別忘了把導致泄露的入口一並修掉。如果 sitemap、栏目列表或内鏈里本来就指向這些地址,只處理頁面本身,下次生成還會再冒出来。

小结

预览頁和測試目錄的問题不在于技術难度,而在于有没有人定期看一眼。把它纳入每月一次的结构检查,配合發布前的目錄比對,就能用很小的成本避免大部分麻烦。站点运营的很多工作都是這样:不是做加法,而是把不该出現的東西挡在门外。