做站点运营,很多抓取和索引問题並不是服務器宕机,而是一條 robots 規則寫歪了。robots.txt 和 meta robots 一個在服務器根目錄,一個在頁面头部,看似简單,却经常在改版、測試、上线时被忽略。它們一旦出错,影响面往往不是一两個頁面,而是整站或整個栏目。
先分清抓取與索引
這两個机制管的事情不一样,混在一起寫就容易出問题。
- robots.txt:告诉蜘蛛哪些地址可以抓取、哪些不要抓。它控制的是抓取行為,不是索引结果。
- meta robots:寫在 HTML 的 head 里,告诉蜘蛛這個頁面能不能被索引、能不能跟随連結。它控制的是索引和連結處理。
- X-Robots-Tag:通過 HTTP 响應头传递類似指令,适合 PDF、图片、视频等非 HTML 资源,也适合批量控制。
如果既在 robots.txt 里屏蔽某個頁面,又希望它通過 meta noindex 登出索引,蜘蛛可能根本讀不到 noindex。想让頁面不被索引,通常應允许抓取,再用 noindex 控制。
robots.txt 常见自查点
打開浏览器訪問你的域名加 /robots.txt,先確認它返回 200,並且内容是你预期的版本。然後逐條核對:
- 有没有出現 Disallow: /,導致整站被挡。測試环境規則誤上生产是常见原因。
- 是否屏蔽了 CSS、JS 等渲染资源。蜘蛛看不到样式和脚本,可能無法正确理解頁面。
- 重要栏目、詳情頁、分頁路径有没有被誤伤。通配符 * 和结尾 $ 的寫法要检查。
- Sitemap 指令是否指向正确且可訪問的地址。地址寫错等于没提交。
- User-agent 拼寫和大小寫是否准确,是否把不同爬虫的規則混在一起。
- 是否存在多份規則、舊規則残留,或者注释里寫着“临时屏蔽”却一直没删。
meta robots 與 X-Robots-Tag 自查
頁面級的控制更细,也更容易因為模板複製而出错。
- 检查全站模板是否誤加了 noindex。這種情况通常表現為大量頁面同时從索引中消失。
- 確認 nofollow、noarchive、nosnippet 是否真的需要。過度使用會限制蜘蛛對連結和摘要的處理。
- 分頁、篩選、打印頁、排序參數頁,是否适合用 noindex, follow,既不让它們占索引,又保留連結發現能力。
- PDF、图片、视频等非 HTML 文件,检查响應头里有没有意外的 X-Robots-Tag: noindex。
- 不要同时让 noindex 和 canonical 指向其他頁面,两者表達的方向可能冲突,蜘蛛需要自己判断。
上线前後的核對步骤
- 直接訪問 /robots.txt,確認返回狀態和内容,不要只看本地文件。
- 用搜尋引擎提供的 robots.txt 測試工具,輸入几個關键 URL,看是否被允许抓取。
- 抽查首頁、栏目頁、詳情頁的 HTML 源碼,確認 meta robots 没有誤寫。
- 用開發者工具或命令行查看 HTTP 响應头,確認 X-Robots-Tag 符合预期。
- 上线後观察索引狀態變化,但不要期待立刻生效,搜尋引擎需要時間重新抓取和處理。
三個容易踩的坑
- 用 robots.txt 清理索引:屏蔽抓取後,已有索引不一定马上消失,頁面甚至可能仍出現在结果里,只是没有摘要。
- 測試环境規則带上线:改版或迁移时,把 staging 的 noindex、Disallow 一並發布,導致线上頁面被挡。
- 只检查首頁:栏目頁、詳情頁、分頁可能由不同模板生成,規則未必一致,抽查范围要覆盖主要模板。
建议把 robots 检查放進上线清單,並在每次改版、迁移、批量調整模板後抽一次。規則越简單、越集中,越不容易在某個角落留下一條“临时屏蔽”。