蜘蛛池搭好之後迟迟没動静,排查到最後,問题有时候出在一個几百字节的文本文件上——robots.txt。蜘蛛在抓取入口站之前通常都會先請求這個文件,如果它讀到的是全站禁止,那么後面铺的入口頁、跳轉鏈、指向目标站的連結,蜘蛛连看都看不到。
robots.txt 在蜘蛛池里管什么
先明确一個邊界:robots.txt 管的是能不能抓,不是會不會收錄。一個 URL 被抓取了不代表會被索引,被禁止抓取也不等于一定不會出現在结果里(只是正常情况下搜尋引擎會遵守)。對蜘蛛池来说,這個文件的作用更偏向路径引導:告诉蜘蛛哪些目錄可以進,哪些文件不必浪費配額去碰。
它也不是安全机制。寫進 robots.txt 的路径相当于對外公開,不想被看到的内容不應该靠它来藏。
入口站常见的几種配置
全站放行
文件存在但没有實质性的 Disallow 規則,或者只寫一條 Allow,這是入口站最省事的寫法,适合入口頁本身就是给蜘蛛看的情况。
全站禁止
Disallow 全站是入口站最容易犯的致命错誤。它常来自測試环境配置忘了改,或者模板里带了預設屏蔽。表現是服務器日誌里几乎看不到主流蜘蛛對入口頁的請求。
按目錄放行
- 只允许入口頁所在目錄,屏蔽後台、临时目錄、參數拼接頁;
- 把 sitemap 声明的路径一起放行,否則声明了也讀不到;
- 避免用規則去屏蔽带參數的 URL,容易誤伤正常頁面。
几個高频踩坑点
- 屏蔽 CSS 和 JS:蜘蛛渲染頁面时需要這些资源,屏蔽後可能判断頁面结构異常。
- 用它代替 noindex:想阻止索引應该用 meta robots 或响應头,不是靠禁止抓取。
- crawl-delay 设得過大:部分蜘蛛支持這個字段,设成几十秒等于主動降低入口頁的抓取频率。
- 文件本身返回異常:robots.txt 返回 5xx 时,各蜘蛛的處理策略並不一致,可能暫停抓取,也可能按放行處理,结果不可控。
- 存在多份文件:子域名、不同端口、http 與 https 各有一份,規則互相打架。
- 通配符寫错:不同蜘蛛對通配符的支持程度不一样,寫错容易连正常路径一起屏蔽。
和 nofollow、meta robots 的分工
這三样经常被混着用,其實作用层面不同:
- robots.txt:控制抓取,属于入口层面;
- meta robots:控制索引與跟随,作用在單個頁面上;
- rel=nofollow:控制是否传递權重、是否繼續顺着連結走。
蜘蛛池里更常见的失誤是連結上加了 nofollow,蜘蛛虽然来了,但不再往下跟,入口頁就成了终点站。
實操建议
- 入口站统一放行,屏蔽規則只针對确實不需要蜘蛛訪問的目錄;
- 把 sitemap 地址寫在 robots.txt 里,方便蜘蛛直接找到 URL 清單;
- http 與 https、主域名與子域名分別检查,確認只有一份規則實际生效;
- 改動後观察一段時間的服務器日誌,看蜘蛛請求量有没有異常波動。
怎么驗證配置真的生效
- 直接訪問域名下的 robots.txt,確認返回正常且内容是最新版;
- 用搜尋引擎官方提供的測試工具模拟抓取,看目标 URL 是被允许還是被拦截;
- 在日誌里篩選主流蜘蛛的 UA,看被屏蔽目錄是否還有請求、放行目錄是否正常出現。
robots.txt 不决定收錄,但它决定蜘蛛能不能走到你家门口。入口站的這個文件,值得在铺連結之前先检查一遍。