不少站点在做 URL 发现时,会把入口页放在蜘蛛池里,同时又担心这些入口页本身被搜索蜘蛛抓取、被判定为低质页面。于是一个很常见的做法出现了:在 robots.txt 里写一条 Disallow,把入口页目录整段屏蔽掉。问题是,这样做之后,入口页里那些指向目标 URL 的链接,搜索蜘蛛还能不能看到?目标 URL 还能不能被发现?
先说结论:屏蔽入口页,等于切断这条发现路径
robots.txt 的 Disallow 作用对象是“抓取”,不是“发现”。当一条 URL 被 Disallow 覆盖时,搜索蜘蛛通常不会再去请求这个页面,也就读不到页面里的 HTML。既然读不到 HTML,页面里的 a 标签、链接文本、URL 参数,自然都无从获取。
换句话说,蜘蛛池入口页的核心价值就是“让蜘蛛读到链接”,而 robots.txt 屏蔽恰好把这件事挡在门外。入口页被屏蔽后,目标 URL 不会因为“入口页存在”而被发现,这条路径基本失效。
需要注意的是,Disallow 并不等于“这个 URL 一定不会出现在搜索结果里”。如果别处有链接指向它,它仍可能被索引,只是缺少描述信息。想控制索引,应该用页面级的 noindex,但 noindex 生效的前提是蜘蛛能抓到页面——这两件事经常被混为一谈。
几种常见的配置情况
1. 只屏蔽入口页,目标 URL 允许抓取
- 蜘蛛不抓入口页,读不到里面的链接,目标 URL 无法通过该入口被发现;
- 目标 URL 本身没有被屏蔽,如果通过 sitemap、站内链接、外部链接等路径被发现,仍然可以正常被抓取;
- 结论:屏蔽的是“发现通道”,不是“目标页面”。
2. 入口页和目标 URL 一起被屏蔽
这种情况下,抓取和发现两条路都被堵住。除非站点在别处还有可抓取的入口,否则目标 URL 基本不会被处理。
3. 用通配符或目录规则误伤
像 Disallow: /entry/ 这类目录级规则,很容易把同目录下的其他有用路径一起屏蔽。上线前建议用搜索引擎官方的 robots.txt 测试工具逐条验证,确认命中范围,而不是凭直觉判断。
如果确实不想让入口页被抓,怎么办
先想清楚目的:
- 目的是“不想让入口页出现在搜索结果里”,优先考虑 noindex,而不是 Disallow;
- 目的是“不想让蜘蛛把抓取预算花在入口页上”,这部分可以接受屏蔽,但要另建发现路径;
- 目的是“保护入口页不被竞争对手看到”,这个思路本身不成立,因为 robots.txt 是公开文件,屏蔽反而等于公开告知目录位置。
替代的 URL 发现方式
- sitemap:把目标 URL 整理成 sitemap 提交,是相对稳定的发现方式,不依赖入口页是否被抓;
- 站内正常链接:在可抓取的页面里用真实 a 标签指向目标 URL,让链接结构本身承载发现功能;
- 搜索平台的 URL 提交接口:适合新页面或更新频繁的页面,作为补充手段;
- 外部链接:在其他可抓取的页面上留链接,同样可能被蜘蛛顺着发现。
实操建议
如果入口页已经用 robots.txt 屏蔽,可以先做个简单验证:用搜索引擎的抓取测试工具请求一个入口页 URL,看返回的是“被 robots.txt 阻止”还是正常内容。如果显示被阻止,那这条路径上的链接确实不会被读取。
之后按这个顺序调整:确认目标 URL 本身没有被 robots.txt 覆盖;把目标 URL 放进 sitemap;在可抓取的页面里补上稳定的站内链接;再观察服务器日志里目标 URL 的抓取记录是否出现。抓取是否真的发生,最终以日志为准,而不是以“我提交了”为准。