robots.txt 是蜘蛛在抓取前會讀取的第一個文件,它决定哪些路径可以進入、哪些應当绕開。很多站点把它当成"屏蔽敏感目錄"的工具,却忽略它對 URL 發現的连带影响:一條寫得太宽的 Disallow,會让整段目錄既不被抓取,也不再通過该路径暴露内鏈。
robots.txt 在抓取鏈路里的位置
蜘蛛的典型顺序是:讀取 robots.txt,判断目标 URL 是否允许,再請求頁面並解析頁面内的連結。也就是说,它影响的是"能不能進门",而不是頁面质量好不好。有两点容易被忽视:
- Disallow 只阻止抓取,不等于 noindex。如果该 URL 仍從別處被引用,它有可能以無描述的形式出現在结果里。
- 被 Disallow 的頁面,蜘蛛不會去讀它上面的連結,這一段内鏈等于被切断。
常见規則的核對点
路径匹配方式
多數爬虫按前缀匹配。寫 Disallow: /search 會同时命中 /search、/search/result 甚至 /searching 這類地址。若只想限制某個目錄,建议带上尾斜杠寫成 Disallow: /search/,邊界更清楚。
通配符與结尾符
部分爬虫支持 * 和 $,例如 Disallow: /*?print= 用来屏蔽打印參數。不支持這些符号的爬虫會把它們当作普通字符處理,實际效果與预期不同。規則上线後,最好用日誌抽样核對真正被拦下的 URL 是否符合设想。
Crawl-delay 的實际效力
Crawl-delay 並非所有搜尋引擎都遵循。Google 明确表示不使用该指令,抓取速度在搜尋控制台里調整;Bing 等則部分支持。把限速完全寄托在這條指令上並不稳妥,服務器层面的限流、缓存與静態化才是更可靠的兜底。
Sitemap 声明與入口一致性
robots.txt 末尾常用 Sitemap: 行声明站点地图地址,這是發現新 URL 的一條捷径。核對时留意:
- 声明的地址要能正常訪問,返回的是地图文件而不是登入頁或错誤頁。
- 协议與域名要和規范地址一致,避免 http 與 https、www 與非 www 混用。
- 若某個目錄已被 Disallow,就不要把该目錄下的 URL 放進 Sitemap,两邊冲突时容易白跑。
一份可执行的核對顺序
- 直接在浏览器打開 /robots.txt,確認返回 200 且是纯文本,而不是被前端路由接管的頁面。
- 逐條阅讀 Disallow,标出是否誤伤站内搜尋、分頁、静態资源等路径。
- 用抓取日誌抽样,看被拦的 URL 里是否存在本應被抓的詳情頁或列表頁。
- 检查 Sitemap 声明與實际文件是否都能訪問,内容是否為最新版。
- 改動後留出观察周期,對比抓取量與有效 URL 數的變化,再做下一轮調整。
把 robots.txt 当作抓取邊界的說明文件,而不是萬能開關。它能减少無效抓取,也可能顺手切断一條 URL 發現路径。