做入口页时经常遇到一个矛盾:这个页面本身不想被收录,但又希望搜索蜘蛛顺着它去发现目标 URL。于是有人给入口页加 robots.txt 屏蔽,或者加 noindex,然后发现目标 URL 迟迟没有动静。问题往往不在“屏蔽”本身,而在于屏蔽方式决定了搜索蜘蛛能不能读到页面里的链接。
先分清三种“屏蔽”,作用完全不同
- robots.txt 里的 Disallow:禁止搜索蜘蛛抓取指定 URL 或目录。被禁止的地址,爬虫通常不会去请求,自然也读不到页面 HTML。
- meta robots 的 noindex:允许抓取、允许解析链接,只是不希望这个页面出现在搜索结果里。
- nofollow(链接级或页面级):表达“不传递权重、不背书”的意思,但对是否继续发现链接,各搜索引擎处理并不一致,不能当作可靠的发现通道。
入口页被 robots.txt 屏蔽后会怎样
如果入口页 URL 或它所在的目录被 Disallow,搜索蜘蛛通常不会请求这个页面,页面里写的目标 URL 链接也就不会被它从这个入口读到,顺着链接发现新 URL 的路径等于断了。此时目标 URL 能否被发现,只剩其他渠道:sitemap、其他可抓取页面上的链接、主动提交等。
还有一种更隐蔽的情况:入口页本身没被屏蔽,但它引用的链接指向被 Disallow 的目标 URL。链接能被读到,目标 URL 却无法被抓取,结果就是“发现了却抓不到”,日志里只看到少量尝试甚至完全没有。
meta robots 与 X-Robots-Tag 的差别
给入口页加 noindex 不会阻止抓取。搜索蜘蛛仍然会请求页面、解析 HTML、跟随里面的链接,只是不把这个入口页收录。如果目标是“入口页不收录、但链接照常被发现”,noindex 通常比 Disallow 更合适。X-Robots-Tag 通过 HTTP 响应头下发,效果类似,常见于 PDF、图片等非 HTML 资源。
nofollow 会不会影响发现
页面级或链接级 nofollow 会被搜索引擎当作提示处理。多数情况下爬虫仍可能把链接当线索去抓,但优先级和可靠性会下降。把 nofollow 链接当作主要的 URL 发现手段并不稳妥,尤其是入口页链接数量多、更新频繁时。
自查清单:先确认问题出在哪一环
- 用 robots.txt 测试工具检查入口页 URL 和目标 URL 是否被规则遮挡,注意目录级通配符。
- 看入口页响应头与 HTML 里的 meta,确认是否存在 noindex、nofollow,以及 canonical 是否指向了别处。
- 查服务器日志里搜索蜘蛛的 UA,看它是否请求过入口页、返回什么状态码。
- 看目标 URL 是否被单独请求过,状态码是 200、301 还是 5xx、403。
- 确认入口页链接是真实可点击的 a 标签,而不是纯 JS 拼接或点击后才加载。
几个容易踩的坑
- 目录整个被 Disallow,又想靠里面的入口页传递链接:逻辑上互斥,蜘蛛进不来。
- 规则只写了干净地址,漏掉带参数版本:?utm、?from 等变体不在规则内,抓取行为不一致。
- 入口页 5xx 或频繁超时:爬虫会降低来访频率,链接发现效率下降,先修稳定性和响应速度。
- 目标 URL 自身被屏蔽或需要登录:入口页再正常,抓取也无法完成。
一句话判断:想“不收录但要被发现”,用 noindex;想“完全不抓取”,用 robots.txt Disallow,但别指望它还能帮你传递链接。
最后,URL 发现只是第一步,抓取和收录还受站点质量、链接结构、抓取配额等影响。把入口页的抓取状态、链接可读性和目标 URL 的可访问性逐一确认,通常比反复更换入口页更有效。