在蜘蛛池的入口頁体系里,robots.txt 和 meta robots 是最容易被顺手寫上、又最少被認真检查的两類配置。它們本身不參與排名,却會直接决定蜘蛛能不能顺着入口頁把 URL 發出去。很多入口頁明明有連結、有内容,蜘蛛却迟迟不来,問题往往就出在這几行規則上。
robots.txt 管的是抓取许可,不是收錄结果
robots.txt 的作用是告诉蜘蛛哪些路径不要抓。它拦不住頁面被別人收錄(別處有連結时仍可能出現),但會让入口頁上的連結失去被發現的机會——蜘蛛不抓這個頁面,自然看不到頁面里指向的 URL。
User-agent 分组要寫清楚
robots.txt 按 User-agent 分组,每组規則只對匹配的蜘蛛生效。常见的坑是只寫一條 User-agent: * 就以為萬事大吉,而實际需要關注的搜尋引擎蜘蛛抓取习惯並不一致。需要区分就單獨分组,不需要区分就用通配,但規則本身別寫得太紧。
Disallow 是前缀匹配,容易誤伤
- Disallow: /tmp 會同时挡住 /tmp、/tmp1、/tmpage 這類路径,要留意结尾是否该加斜杠。
- Disallow: /*?* 這種一刀切挡參數的寫法,可能把入口頁依赖的分頁、篩選連結一起挡掉。
- 空白的 Disallow: 表示不限制,和 Disallow: /(全部禁止)是完全相反的结果,两者只差一個斜杠。
Crawl-delay 與 Sitemap
Crawl-delay 只有部分蜘蛛支持,數值设得過大,等于主動降低入口頁被訪問的频次。Sitemap 一行則相当于给蜘蛛一份額外的入口清單,建议指向返回 200 的 XML 地址,不要指向跳轉鏈或需要登入的路径。
meta robots 與 X-Robots-Tag 的分工
只想控制單個頁面时,用頁面内的 meta robots 更直观;如果是图片、PDF、JS 等非 HTML 资源,就只能靠响應头里的 X-Robots-Tag。两者指令语义一致,同一頁面同时出現时,通常以更嚴格的那條為准。
- noindex:不索引,但不影响蜘蛛繼續抓取頁面里的連結。
- nofollow:不追踪頁面内連結,用在入口頁上等于自己切断 URL 發現路径。
- none:等同于 noindex 加 nofollow,限制最彻底,入口頁要慎用。
几種常见的反效果寫法
- 入口頁模板里带了全局 noindex,上线时忘了摘掉。
- robots.txt 里挡住了静態资源目錄,蜘蛛抓到 HTML 却拿不到 CSS 和 JS。
- 測試环境留下的 Disallow: / 被同步到了线上。
- 多個子域共用同一份 robots.txt,互不相關的規則叠加在一起。
上线前的自检顺序
- 直接訪問 /robots.txt,確認返回 200 且是纯文本,不是 404 或 HTML 错誤頁。
- 用搜尋引擎後台的測試工具模拟目标蜘蛛讀取規則,逐個驗證關键路径。
- 抽查入口頁源碼里的 meta robots,確認没有被模板或 CMS 插件悄悄注入。
- 检查非 HTML 资源的 X-Robots-Tag 响應头。
- 規則調整後观察訪問日誌,確認蜘蛛的抓取行為符合预期。
robots 類配置属于做對了没有額外收益、做错了直接断路的环节。它不保證收錄,也不保證排名,但能保證入口頁不會因為一行規則被蜘蛛整体跳過。
一点使用建议
入口頁的 robots 規則建议尽量简單:只放開确實需要被發現的路径,只挡住确實不该抓的目錄,不做過度的正則式限制。每次改動前後留一份记錄,方便在蜘蛛行為異常时快速回滚對比。