很多站点上线一段時間後,會在索引里發現一些“不该出現”的頁面:還没寫完的草稿、只發给客戶看過的预览地址、測試环境里的商品頁,或者一排寫满“敬請期待”的占位栏目。它們往往不是被主動提交的,而是在某個环节被蜘蛛顺手抓到,然後安静地留在索引里。
未完成頁面通常從哪来
先分清来源,才能對症處理。常见的几類:
- CMS 草稿與定时發布:文章儲存為草稿但已生成正式 URL,或者設定了定时發布,頁面其實已经能訪問。
- 预览與分享連結:给同事、客戶看的预览地址,带着一串随机 token,本身可公開訪問且不设 noindex。
- 測試與备用域名:test、dev、staging 之類的子域,解析正常、robots 未限制,被外鏈或日誌泄露後被抓取。
- 占位與空栏目:栏目建好了但内容為空,模板仍輸出标题和分頁。
- 临时活動頁:活動結束後頁面保留,内容過期,却没有下线或跳轉。
蜘蛛是怎么找到它們的
蜘蛛不會区分“這個頁面還没准备好”,它只跟着連結走。常见的進入路径包括:
- 正式頁面上誤留了指向预览地址或測試域名的連結。
- 站点地图或 RSS 把草稿、定时發布頁一起輸出了。
- 編輯在外部平台、邮件、文档里分享過連結,被爬虫或第三方工具带走。
- 空列表頁自動生成分頁或“相關内容”,把空頁面互相串起来。
上线前的自查清單
- 確認草稿不产生可訪問 URL。检查 CMS 是否给草稿分配了正式路径,能否被未登入訪客直接打開。
- 给预览連結加限制。预览頁應要求登入或校驗 token,並加上 noindex,不要只靠“没人知道地址”。
- 測試域名统一拦截。用 robots.txt 全站屏蔽,再加一层基础認證;不要把測試域名的連結發到正式站。
- 空栏目先不要輸出。内容為零的栏目可以先不生成列表和分頁,避免蜘蛛反复抓空頁。
- 核對站点地图與 RSS。確認輸出范围只包含已發布、可公開訪問的頁面。
- 活動頁设到期處理。活動結束前决定是下线、跳轉到新頁,還是保留並更新内容。
- 抽查索引狀態。隔一段時間用站点查询或站長工具看看,是否出現陌生的路径片段,如 /draft/、/preview/、?token=。
已经被抓到了怎么办
發現之後不要慌,按顺序處理:先让頁面不可公開訪問或加上 noindex,再確認返回狀態碼是否符合预期,然後走正常的移除流程等待重新抓取。顺序反了,容易白等一轮。
狀態碼別弄混
- 頁面永久不再需要:返回 404 或 410。
- 内容迁移到新地址:用 301 指向對應的正式頁面。
- 只是暂时不想被看到:可以用 noindex,但頁面仍需正常返回 200。
临时用 robots.txt 屏蔽只是應急手段。如果頁面本身不應该被索引,robots.txt 挡不住已收錄的 URL 出現在结果里,最终還是要靠 noindex 或狀態碼解决。
把“未完成”留在後台
這件事的核心不在于技術多复杂,而在于流程:谁来建栏目、谁来發布、预览連結谁能拿到、測試环境谁来管。把這些约定寫進上线核對清單,比事後清理索引要省力得多。定期花十几分钟看一眼抓取日誌和索引概况,往往就能提前發現漏出去的頁面。