常见問题

入口頁被 robots.txt 屏蔽,里面的目标連結還能被搜尋蜘蛛發現吗?

入口頁被 robots.txt 屏蔽後,里面的目标連結還能不能被搜尋蜘蛛發現?本文讲清 Disallow 到底屏蔽了哪一环、哪些情况下目标 URL 仍可能被發現、哪些做法等于白搭,並给出几條可落地的自查步骤。

常见問题

入口頁被 robots.txt 屏蔽,里面的目标連結還能被搜尋蜘蛛發現吗?

不少人在搭建蜘蛛池入口頁时,會顺手在 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 則让它根本抓不到。两者叠加,往往互相打架,结果和预期完全不同。
  • 一邊屏蔽入口頁,一邊指望它传递連結關系:頁面都讀不到,里面的連結自然無從谈起。

怎么排查

  1. 打開自己的 robots.txt,逐條對照入口頁和目标 URL 的實际路径,特別留意通配符和以 $ 结尾的寫法。
  2. 用站長平台提供的 robots.txt 測試工具,輸入入口頁 URL,看结果是“允许”還是“被屏蔽”。
  3. 確認目标 URL 不在任何一條 Disallow 規則覆盖范围内,避免被“顺带”挡住。
  4. 如果确實不希望入口頁被抓取,就別把它当作目标 URL 的發現通道,改用 sitemap 或提交接口补上這條路径。
  5. 在服務器日誌里观察搜尋蜘蛛是否請求過入口頁。如果長期完全没有记錄,多半就是被規則挡住了。
一句话總结:robots.txt 管的是“能不能抓這個頁面”,不是“能不能知道這個連結”。想让入口頁承担發現連結的作用,就別把它屏蔽掉。