在搭建蜘蛛池或维护入口页时,很多人会用 robots.txt 控制搜索蜘蛛的抓取范围。一个常见疑问是:如果入口页本身被 robots.txt 里的 Disallow 挡住了,这个页面里指向目标 URL 的链接,搜索蜘蛛还会不会跟过去?
先区分“抓取”和“索引”
robots.txt 管的是抓取,不是索引。它告诉搜索蜘蛛“这个目录或这个页面不要来抓内容”,但并不会自动把页面从搜索结果里删掉。所以被 Disallow 的入口页,仍可能因为外部链接等原因出现在搜索结果中,只是展示的信息不完整。
被屏蔽的入口页,链接基本不会被发现
搜索蜘蛛发现新 URL 的主要方式,是把已经抓取到的页面里的链接解析出来。如果入口页因为 robots.txt 无法被抓取,页面内容就进入不了这个解析流程,里面的链接也就无从获取。换句话说,用 robots.txt 屏蔽入口页,等于同时切断了通过这个页面发现目标 URL 的通道。
需要说明的是,这里说的是“通常”。搜索引擎偶尔会通过其它渠道拿到链接,比如其它未被屏蔽的页面、外部链接、sitemap、URL 提交接口等,但这些都不是这个入口页的功劳。
什么时候适合屏蔽入口页
如果入口页本身没有实际内容,只是给蜘蛛看的链接集合,而且已经有 sitemap 覆盖了同样的目标 URL,那么用 robots.txt 屏蔽可以省下抓取配额,把抓取机会留给真正需要被收录的页面。反过来,如果目标 URL 目前只能靠这个入口页被发现,就不要屏蔽它。
如果确实需要屏蔽,还有哪些替代路径
- sitemap:把目标 URL 直接写进 sitemap,并通过站点管理工具提交,不依赖入口页链接。
- URL 提交接口:对重点地址手动或通过接口提交,适合数量不多、优先级高的 URL。
- 保留一个未被屏蔽的入口页:把需要被发现的目标链接放到不受 Disallow 影响的路由下。
- 可被抓取的外部链接:从站内其它可抓页面或站外页面指向目标 URL。
排查顺序
- 打开 robots.txt,确认 Disallow 的路径是否真的覆盖了入口页地址,注意通配符和目录写法的差异。
- 用搜索引擎官方提供的 robots.txt 测试工具,验证该入口页是否被判定为禁止抓取。
- 查看服务器日志里搜索蜘蛛最近是否访问过这个入口页。如果长期没有访问记录,说明屏蔽确实生效了。
- 再确认目标 URL 本身没有被 robots.txt、noindex、登录限制或 WAF 单独挡住,避免排查方向跑偏。
- 改用 sitemap 或其它入口页之后,继续观察日志中目标 URL 是否出现访问记录。
几个容易混淆的点
第一,robots.txt 里写 Disallow 和给页面加 noindex 是两回事,后者需要搜索蜘蛛先抓取到页面才能读到。第二,屏蔽入口页不会“通知”搜索引擎去删除已有索引,两者不能互相替代。第三,蜘蛛池里入口页数量多不代表发现效率高,如果大部分入口页都处在无法被抓取的状态,链接再多也不会被解析。
把入口页屏蔽掉,却指望它继续帮忙发现目标 URL,方向本身就是矛盾的。要么放开抓取,要么把发现任务交给 sitemap 和 URL 提交这类不依赖页面抓取的渠道。