给蜘蛛池入口頁做排查时,robots.txt 是最容易被忽略的一环。很多人只盯着入口頁的 HTML、連結寫法和服務器响應,却没注意一行 Disallow 就可能让搜尋蜘蛛连頁面都不讀,後面的目标連結自然無從谈起。下面把常见誤配置和自查方式理一遍。
robots.txt 约束的是抓取,不是收錄
先明确一件事:robots.txt 是给蜘蛛看的抓取许可协议。它决定蜘蛛能不能請求某個路径,並不直接决定 URL 是否出現在结果里。
- Disallow:蜘蛛請求该路径时會主動放弃抓取,頁面内容讀不到。
- Allow:在整体屏蔽的前提下開一個口子。
- 規則冲突时,一般按路径匹配最長、最具体的那條执行;長度相同时 Allow 通常優先。
對蜘蛛池入口頁来说,如果入口頁本身被 Disallow,蜘蛛不會讀取頁面,也就看不到頁面上指向目标 URL 的連結,這條發現鏈路就断了。
常见的誤屏蔽寫法
1. 一行通配把整站關掉
Disallow: / 是最典型的例子——本来只想挡後台目錄,结果把全站挡了。測試环境抄来的配置没删干净,也很容易出現這種情况。
2. 带參數的規則誤伤入口頁
像 Disallow: /*? 這類規則,會连同正常带參數的入口頁一起挡住。入口頁如果带分頁、篩選或統計參數,就要特別留意這一行。
3. robots.txt 本身返回 5xx
多數搜尋引擎拿到 5xx 的 robots.txt 时會保守處理,短時間内减少甚至暫停對该站点的抓取。反過来,返回 404 通常被视為没有限制,可以正常抓取。所以“临时關站就把 robots.txt 删掉”並不是一個适合長期使用的手段。
4. 被 CDN 或反向代理缓存了舊版本
上线新規則後,如果邊缘节点還缓存着舊的 robots.txt,蜘蛛看到的就是上一版。改完记得刷新缓存,並實际拉取一次確認内容。
入口頁被屏蔽後,目标 URL 還有別的發現途径吗
有,但通常不如正常抓取顺畅:
- 目标 URL 被其他未被屏蔽的入口頁或外部頁面連結。
- 目标 URL 出現在提交的 sitemap 或 RSS 中。
- 目标 URL 通過主動提交接口被推送。
這些方式只是提供發現线索,具体是否抓取、何时抓取,仍由搜尋引擎自己决定。所以把入口頁的 robots.txt 修好、恢复正常的連結發現路径,通常比另找渠道更省事。
自查步骤
- 直接訪問站点根目錄下的 robots.txt,確認返回 200 且内容是最新版。
- 逐行核對 Disallow,對照入口頁的真實路径,特別注意通配符和末尾斜杠。
- 用搜尋引擎提供的 robots.txt 測試工具,輸入一個入口頁 URL,看判定结果。
- 核對服務器日誌:如果入口頁長期没有蜘蛛請求记錄,而站内其他頁面有,基本可以鎖定是抓取层被挡住了。
- 修好後观察一段時間日誌,確認蜘蛛能重新請求入口頁,並顺着連結訪問目标 URL。
容易和 robots.txt 搞混的两個東西
- meta robots 或 X-Robots-Tag 里的 noindex:它不阻止抓取,蜘蛛仍然會讀取頁面、跟随連結,只是被标记的 URL 不應出現在结果中。也就是说,加了 noindex 的入口頁,里面的連結通常還是會被跟過去。
- 屏蔽目錄和屏蔽單個 URL 的差別:robots.txt 是路径級別的,寫错一层目錄,可能连带影响下面的所有入口頁。
一句话理解:robots.txt 挡的是“能不能讀”,不是“能不能被收錄”。入口頁讀不到,頁面上指向目标 URL 的連結就不會被發現。
最後提醒一句,robots.txt 属于抓取层配置,改完不要只看面板提示,最好用實际請求和日誌双重確認。規則越简單越好,能用一條精确路径解决,就不要轻易上通配符。