不少人在搭建蜘蛛池入口頁时,會顺手在 robots.txt 里把入口頁目錄 Disallow 掉,心里想的是“頁面本身不想被抓,但連結留着让蜘蛛顺着去抓目标 URL”。這個思路能不能成立,要看被挡住的到底是哪一环。
robots.txt 屏蔽的是“抓取”,不是“發現”
robots.txt 的 Disallow 規則,作用是告诉搜尋蜘蛛不要去請求這個 URL,也就是不抓取。它是行业约定,主流搜尋引擎的蜘蛛都會遵守。但搜尋引擎获得一個 URL 的途径有很多:sitemap、外部連結、主動提交接口、其他頁面上的連結。入口頁被 Disallow,切断的只是“從入口頁 HTML 里讀到連結”這一條路径,並不影响目标 URL 從別的渠道被發現。
換句话说,連結的“被發現”和頁面的“被抓取”是两件事。把入口頁屏蔽掉,等于關掉了一條發現通道,而不是把目标 URL 拉黑。
入口頁被屏蔽後,里面的連結會怎样
- 如果入口頁是目标 URL 唯一的發現途径,那基本就等于断了:蜘蛛不會去請求入口頁,自然也讀不到里面的 a 标簽。
- 如果目标 URL 已经寫進 sitemap,或者通過提交接口推送過,它仍然可能被抓取,只是少了入口頁這條連結關系作為补充。
- 如果入口頁 HTML 在規則生效之前已经被抓取並缓存,里面的連結可能在短時間内還被记得,但這既不可靠,也無法長期依赖。
几個容易踩的场景
- 通配符寫得太宽:例如 Disallow: /*? 或 Disallow: /pool/,把入口頁和它下面所有連結頁面一起挡住。
- 入口頁和目标 URL 被同一條規則覆盖:常见于入口頁和目标頁放在同一個目錄、共用同一個路径前缀的情况。
- 把 robots.txt 和 meta noindex 混着用:noindex 需要蜘蛛先把頁面抓下来才能讀到,Disallow 則让它根本抓不到。两者叠加,往往互相打架,结果和预期完全不同。
- 一邊屏蔽入口頁,一邊指望它传递連結關系:頁面都讀不到,里面的連結自然無從谈起。
怎么排查
- 打開自己的 robots.txt,逐條對照入口頁和目标 URL 的實际路径,特別留意通配符和以 $ 结尾的寫法。
- 用站長平台提供的 robots.txt 測試工具,輸入入口頁 URL,看结果是“允许”還是“被屏蔽”。
- 確認目标 URL 不在任何一條 Disallow 規則覆盖范围内,避免被“顺带”挡住。
- 如果确實不希望入口頁被抓取,就別把它当作目标 URL 的發現通道,改用 sitemap 或提交接口补上這條路径。
- 在服務器日誌里观察搜尋蜘蛛是否請求過入口頁。如果長期完全没有记錄,多半就是被規則挡住了。
一句话總结:robots.txt 管的是“能不能抓這個頁面”,不是“能不能知道這個連結”。想让入口頁承担發現連結的作用,就別把它屏蔽掉。