新栏目、新模板、新域名上线,很多人的第一反應是等日誌里出現蜘蛛。但等到蜘蛛真的来了才發現問题,改起来往往已经牵動线上结构。更省事的做法是:在上线前,自己按蜘蛛的方式把這條路走一遍。
為什么要自己先走一遍
蜘蛛看到的世界和你用浏览器看到的世界並不完全一样。它不登入、不点按钮、不一定执行脚本,也不會因為頁面好看就多给几次机會。你熟悉站点结构,知道该点哪里;蜘蛛只認連結和狀態碼。把這两者之間的落差提前找出来,比事後翻日誌排查轻松得多。
第一步:從入口規則開始
蜘蛛的第一站通常是 robots.txt,然後是首頁或 Sitemap。自测也從這里開始:
- 打開 /robots.txt,確認没有把新目錄、静態资源目錄或整站誤挡。注意 Disallow 是按前缀匹配的,寫 /search 這種規則时,可能连 /search-guide 一起挡住。
- 打開 Sitemap,確認里面列出的每個 URL 都能直接返回 200,而不是跳轉之後才到目标頁。
- 確認 Sitemap 的地址寫進了 robots.txt,且文件本身可以匿名訪問。
第二步:用請求模拟一次抓取
不必装复杂工具,命令行就够了。带上蜘蛛的 User-Agent 發請求,重点看四件事:
- 狀態碼:目标頁返回的是 200,還是 301、302 甚至 403。跳轉一两次問题不大,但每一跳都會消耗抓取资源。
- 响應头:是否带着 noindex,是否设了奇怪的缓存策略,或者存在把蜘蛛挡在外面的規則。
- 响應体:在不执行脚本的情况下,首屏 HTML 里有没有标题、正文和主要連結。如果關键内容全靠脚本插入,就要確認渲染方案是否稳定。
- 大小寫與结尾斜杠:/Page 和 /page、/page 和 /page/ 是否被当成同一個地址,避免同一份内容生成多條路径。
第三步:把内鏈当成路径来走
入口没問题,不代表走得進去。挑几個最重要的目标頁,從首頁開始只靠点击連結往前,看看要几次才能到。三次以内比較理想,超過五次的頁面,很容易長期停在抓取队列後面。
同时留意两類問题:
- 孤岛頁面:Sitemap 里有,但站内没有任何入口連結。它可能被抓到,却缺少内部權重和上下文。
- 無限路径:篩選、排序、日歷、分頁组合出来的地址,理论上可以無限生成。用 robots 規則或 canonical 收敛,別让它們長期占住抓取队列。
第四步:看服務器扛不扛得住
蜘蛛抓取是並發請求,不是單個訪客。自测时可以用脚本同时請求几十個頁面,观察响應時間是否突然拉長、是否出現間歇性 5xx、CDN 缓存是否返回了舊版本。間歇性故障比一次宕机更麻烦:蜘蛛每次拿到的结果不稳定,它會主動降低抓取频率,恢复起来也慢。
自测的目的不是保證蜘蛛一定来,而是把明顯挡路的東西在上线前清掉。
一份可以复用的自测清單
- robots.txt 允许目标目錄和静態资源。
- Sitemap 中的 URL 全部返回 200,且不是重定向後的结果。
- 核心頁面從首頁出發三次点击内可達。
- 不执行脚本时,頁面仍有可讀的标题、正文和主要連結。
- TTFB 稳定,没有明顯的間歇性 5xx。
- 空结果頁返回 404 或 410,而不是 200 的空壳。
- canonical 指向自身或正确的規范地址。
- 參數组合不會生成大量重复路径。
把這份清單固定下来,每次改版、上新栏目或迁移目錄时跑一遍,比每次凭感觉排查要可靠得多。