做 URL 发现的时候,经常会遇到一种情况:准备拿来跑的目标页,查看源码发现 head 里写着 noindex。这时候很多人的第一反应是——那还跑入口页干嘛,反正蜘蛛都不收录了。这个判断其实只对了一半。想把问题想清楚,得先把抓取和索引拆开看。
抓取和索引是两件事
搜索蜘蛛访问一个 URL 的过程是:发起请求、拿到响应、解析 HTML、从里面提取新的链接继续排队。这些动作都属于抓取。而索引是后面的事:搜索引擎根据页面内容、质量、重复度等做判断,决定要不要把它放进可检索的结果里。
noindex 属于索引指令,不是抓取指令。页面带了 noindex,蜘蛛照样会来抓、照样会读 HTML、照样会顺着里面的链接往下走,它只是在下一步被排除在索引之外。所以“目标 URL 有 noindex”和“蜘蛛不会来”是两码事。
noindex 的几种常见写法
- HTML 里的 meta robots 标签,例如 noindex 或 noindex,follow
- 响应头里的 X-Robots-Tag,不少下载类、附件类 URL 用的是这种
- CMS 模板或插件自动注入,导致整站或整类页面都被加上
- 通过 JavaScript 动态插入,这种不一定能被稳定读到
几种写法同时出现时,一般以更严格的那条为准。排查时只盯着源码里的 meta 标签,很容易漏掉响应头里的指令。
这种情况下,入口页继续跑还有意义
- 验证链路是否通:日志里能不能看到蜘蛛来、来了返回什么状态码。如果连抓取都没有,问题大概率在可达性上,比如 robots.txt 屏蔽、DNS 解析异常、响应超时,跟 noindex 没关系。
- 发现页面里的其他链接:如果一个 noindex 页面里还链向其他正常页面,蜘蛛抓到它之后还会继续往下走,这条内链路径是有效的。
- 临时保护后的恢复:有些站点上线前会加 noindex 防止被提前收录,撤掉之后,之前已经建立的抓取路径能省掉一部分重新发现的等待。
- 观察抓取节奏:看日志能知道蜘蛛多久来一次、每次抓多少,判断是不是被其他低质量 URL 占掉了额度。
这几种情况就真的没必要跑
- robots.txt 里对整站写了 Disallow。这时候蜘蛛根本不会发起请求,入口页放再多链接也没用。
- 目标页面本身就是私密页、后台页,本来就不希望被任何人看到,那讨论发现效率没有意义。
- 整站长期 noindex,且没有其他可索引的页面。抓取发生了也产生不了任何可检索的结果。
排查时容易踩的几个坑
- 只看了首页模板,忘了内页模板里还带着 noindex。
- 只查了 meta 标签,没查响应头里的 X-Robots-Tag。
- 分页、带参数的页面被规则自动加了 noindex,自己却不知道。
- 测试环境的 noindex 上线时忘了撤,白白等了好几周。
- 页面同时写了 noindex 和指向自己的 canonical,两个信号互相打架。
遇到抓取异常,先用响应头、状态码、日志这三样确认事实,再决定要不要加入口页或重新提交。顺序反过来,很容易做一堆无效动作。
更稳妥的做法
如果你只是想让搜索引擎更快发现新 URL,优先把站内链接结构、sitemap、URL 提交这几件事做扎实。入口页这类手段本身有争议,过度制造入口、刻意控制抓取频率,很可能被判定为操纵行为,风险要自己承担。真要用,也建议控制规模,并持续看日志验证效果。
至于带 noindex 的目标 URL,先确认它是不是你真正想推的页面。如果是,先解决 noindex;如果不是,就别在它身上浪费抓取次数。