常见問题

入口頁的 robots.txt 怎么设:屏蔽路径不等于藏住頁面

robots.txt 常被当成蜘蛛池的收錄開關,其實它只管抓取調度。本文拆解入口頁屏蔽、URL 提交冲突、前缀誤伤、Crawl-delay 與脚本屏蔽等常见誤区,並给出比較稳的配置思路和日誌观察方法。

常见問题

入口頁的 robots.txt 怎么设:屏蔽路径不等于藏住頁面

运营蜘蛛池时,robots.txt 经常被当成一個開關:想藏頁面就 Disallow,想被抓就放開。實际使用中,它管的只是抓取調度,和頁面能不能進入索引是两件事。把這两件事混在一起,就容易出現“明明屏蔽了還被收錄”“明明放開了却抓不到”的困惑。

robots.txt 管的是抓取,不是收錄

robots.txt 告诉搜尋蜘蛛哪些路径不必来抓。它既不承诺、也不阻止某個 URL 出現在搜尋结果里。一個 URL 如果被外部連結指向、被提交或以其他方式被發現,即使所在路径被 Disallow,也可能以無摘要的形式進入索引,因為搜尋方没有抓到頁面内容,只能依據連結信息做判断。

反過来,允许抓取也不代表一定會抓。抓取還受配額、優先級、站点整体质量和响應速度影响。所以用 robots.txt 去“控制收錄”,方向從一開始就偏了。

蜘蛛池运营里最常见的几個誤区

誤区一:用 Disallow 藏入口頁

入口頁被 Disallow 後,蜘蛛不會抓取這個頁面,也就看不到里面的目标連結。想借屏蔽让入口頁安静地存在,同时靠它传递 URL,這两個目标本身是冲突的。

誤区二:屏蔽了還去提交 URL

URL 提交和 robots.txt 屏蔽是相互抵消的動作。提交的 URL 落在一個被屏蔽的目錄下,抓取請求會被拦下,日誌里通常只能看到被拒绝的痕迹,而不是一次正常的内容抓取。

誤区三:前缀寫得太宽,誤伤目标路径

robots.txt 的前缀匹配比直觉更宽。寫 Disallow: /tmp 會同时命中 /tmpfile、/templates 這類路径。如果目标 URL 恰好落在被誤伤的目錄下,連結頁抓到了,目标 URL 却進不来。

誤区四:指望 Crawl-delay 精细控制节奏

Crawl-delay 字段在不同搜尋方的支持程度並不一致,如今更多依赖服務器返回的 429、503 以及站点整体响應表現来調节抓取。與其寫一條 Crawl-delay 求平安,不如先把响應時間压一压。

誤区五:把 CSS、JS 一起屏蔽

屏蔽样式和脚本會让渲染结果與用戶看到的頁面不一致。如果目标連結是脚本動態插入的,屏蔽脚本之後,蜘蛛拿到的 HTML 里根本没有這條連結。

實际怎么设比較稳

  • 入口頁和放連結的路径保持可抓取,不要 Disallow,也不要加 noindex。
  • 後台、管理路径、站内搜尋结果頁、重复的篩選參數路径,可以按前缀屏蔽,减少無效抓取。
  • 屏蔽規則寫窄一点,能寫完整目錄就別用容易誤伤的短前缀。
  • 每次改完 robots.txt,隔几天翻日誌,看目标 URL 的抓取請求是變多還是變少。
  • 關键頁面用普通 a 标簽直接给出連結,不要依赖跳轉或脚本生成。
判断标准很简單:如果日誌里搜尋蜘蛛訪問入口頁的次數正常,但目标 URL 一直没出現抓取請求,先去看 robots.txt 的匹配范围,再去看入口頁里的連結是不是真的寫在 HTML 里。

一個容易忽略的细节

robots.txt 的更新不會立刻全面生效。有些蜘蛛會缓存舊版本一段時間,改完之後短期内看到的抓取行為和文件内容不一致,属于正常現象。此时反复改文件,只會让後續观察更难判断,建议改一次,等一個观察周期再决定下一步。

把 robots.txt 当成抓取調度的工具,而不是收錄的開關,蜘蛛池里很多看起来像玄学的問题,都會變得可以直接排查。