在蜘蛛池的抓取鏈路里,robots.txt、meta robots 和 X-Robots-Tag 是抓取端最先遇到的几道指令。它們不直接影响排名,却會决定蜘蛛是否繼續訪問、是否把頁面放進索引候選。很多入口頁看起来正常,但蜘蛛到了之後立刻离開,問题就出在這些指令上。
robots.txt 是站点級协议,不是安全工具
robots.txt 放在域名根目錄,用来告诉抓取端哪些路径可以抓、哪些不建议抓。它有两個容易被忽略的特点:一是只對遵守协议的蜘蛛有效,二是它本身不是訪問控制。把後台、敏感目錄寫進 Disallow,並不能阻止直接訪問,反而可能让這些 URL 通過外部連結被蜘蛛發現。
蜘蛛池入口頁最常见的誤用是整站禁止:
- Disallow: /:入口頁和所有子路径都不再被抓取,蜘蛛即使来了也不會繼續。
- 規則寫错:比如多寫空格、路径大小寫不一致、通配符使用不当,導致想放行的目錄被誤伤。
- 屏蔽静態资源:把 CSS、JS 或图片目錄一並禁止,抓取端可能無法完整理解頁面内容。
- robots.txt 返回 5xx 或超时:抓取端可能暂时降低抓取频率,嚴重时减少對站点的訪問。
建议在修改 robots.txt 後,用日誌確認蜘蛛對入口頁和目标頁的訪問是否正常,而不是只看配置文件。
meta robots 與 X-Robots-Tag 的差別
meta robots 寫在 HTML 的 head 里,X-Robots-Tag 放在 HTTP 响應头中。两者都能控制索引和連結跟踪,但作用范围不同:前者只影响目前 HTML 頁面,後者可以作用于非 HTML 资源,也更容易在服務器或 CDN 层统一添加。
常见誤区是把 noindex 当成节省抓取预算的手段。實际上,noindex 的意思是“可以抓,但不要索引”。蜘蛛仍然會請求頁面,消耗抓取资源。如果确實不想被抓,應该用 robots.txt 禁止抓取,或者让頁面返回 401、403 等狀態。
- noindex:不索引,但允许抓取。
- nofollow:不跟踪頁面上的連結,可能影响入口頁向目标頁的連結發現。
- none:相当于 noindex, nofollow,誤用會让頁面既不被索引,也不传递連結线索。
如果入口頁用了 nofollow,蜘蛛可能不會沿着連結走到目标頁;如果目标頁用了 noindex,即使被蜘蛛訪問,也不會進入索引候選。
入口頁與目标頁的指令衔接
蜘蛛池通常有入口頁和若干目标頁。入口頁负责被發現,目标頁负责承接訪問或索引。检查时不要只看入口頁,還要看跳轉鏈路上的每一跳。
- 入口頁是否允许抓取,robots.txt 是否有誤伤。
- 入口頁的 meta robots 是否誤寫為 noindex 或 nofollow。
- 重定向鏈中的中間頁面是否返回 3xx、4xx 或 5xx。
- 目标頁是否被 X-Robots-Tag 或 meta robots 阻止索引。
- 日誌中蜘蛛是否真的到達目标頁,狀態碼是否為 200。
如果入口頁允许抓取,但目标頁返回 403 或 noindex,蜘蛛的這次訪問就很难产生後續價值。排查时可以把日誌按 URL 分组,看蜘蛛訪問了哪些頁面、停留多久、狀態碼分布如何。
排查顺序與使用建议
遇到蜘蛛不抓或抓得少时,可以按下面的顺序检查:
- 先訪問 /robots.txt,確認返回 200、语法正确、没有整站禁止。
- 查看入口頁 HTML 的 head,確認没有誤寫的 noindex、nofollow。
- 用浏览器開發者工具或命令行查看响應头,確認没有意外的 X-Robots-Tag。
- 检查 CDN、反向代理或安全插件是否自動添加了禁止抓取的响應头。
- 對照訪問日誌,看蜘蛛的請求频率和狀態碼是否與配置一致。
使用建议上,robots.txt 尽量保持简單,只屏蔽确實不需要抓取的路径;需要被抓取的入口頁和目标頁保持允许。對不想索引但希望被抓的頁面,用 noindex 比用 robots.txt 更合适。對既不想被抓也不想被索引的頁面,才考虑 robots.txt 加訪問控制。任何修改後,都留出观察窗口,通過日誌驗證蜘蛛行為是否符合预期。
指令配置的目标不是“让蜘蛛一定来”,而是减少誤伤:不该挡的別挡,该抓的能抓到,抓不到时能從日誌里找到原因。