做站内抓取巡检时,常会遇到一种情况:页面本身可访问,内容也正常,但站内大量内链指向的 URL 迟迟没有出现在抓取日志里。服务器、DNS、Sitemap 都排查过没发现问题,剩下的怀疑对象往往是链接级和页面级的抓取指令——nofollow、robots meta 以及 X-Robots-Tag。这三者作用范围不同,一旦混用,很容易把本该被正常发现的入口静音掉。
三类指令的作用范围不一样
- rel=nofollow:写在单个 a 标签上,只影响这一条链接,表达的是不跟随该链接,对目标页的发现是负面信号。
- meta name=robots:写在页面 head 区域,作用于当前页,常见值包括 noindex、nofollow、noarchive,可以组合使用。
- X-Robots-Tag:写在 HTTP 响应头里,常用于 PDF、图片、视频等非 HTML 资源,但同样可以作用于 HTML 页面。
把这三者混为一谈,是很多入口发现异常的直接原因。比如以为给内链加 nofollow 能节省抓取预算,实际效果却是把栏目页的入口通道逐条切断。
常见误用场景
全站模板批量 nofollow
模板里为了防止权重外流,给友情链接、底部导航、面包屑统一加上 rel=nofollow。面包屑和主导航恰恰是抓取路径的骨架,被 nofollow 之后,深层页面只能靠 Sitemap 单点入口被发现,抓取深度往往明显变浅。
分页与筛选链接被 nofollow
列表页的翻页链接被加上 nofollow,理由是避免重复内容。但翻页链接是通往历史内容的主要路径,一旦不再跟随,列表页第二页以后的文章基本失去内链入口,只能等待 Sitemap 逐条提交。
noindex,follow 的语义误读
noindex,follow 的含义是当前页不要收录,但可以跟随其上的链接,这个组合本身是合理的。问题在于,如果页面 A 是 noindex,follow,而 A 上所有指向 B 的链接又被加上 nofollow,B 就同时失去了页面级和链接级两条通道,只剩 Sitemap 一条路可走。
X-Robots-Tag 在 CDN 或反向代理上被继承
源站没有设置,但 CDN 边缘节点或安全防护层统一注入了一条 X-Robots-Tag: noindex, nofollow。这种情况在页面源码里完全看不出来,必须查看响应头才能发现。多节点环境下还可能出现部分节点有、部分节点没有,导致抓取表现时好时坏。
robots.txt 与 meta 指令叠加
robots.txt 的 Disallow 表示不许抓取,meta robots 表示抓到了也别用。两者叠加时,如果页面被 Disallow 但 Sitemap 仍在提交,入口会进入既抓不到又不可索引的状态,日志里几乎看不到任何痕迹。
建议的排查顺序
- 先用命令行工具或浏览器开发者工具查看目标页的响应头,确认是否存在 X-Robots-Tag。
- 再查看 HTML 源码 head 区域的 meta robots,注意是否有多个互相冲突的写法。
- 逐个检查抓取路径上的关键链接,看 a 标签是否带 rel=nofollow,重点是导航、面包屑、分页三类。
- 把以上结果和 robots.txt 规则对照,确认链接没有被 Disallow 挡在抓取之外。
- 最后回到抓取日志,区分这些 URL 是从未被抓取,还是抓取了但没被处理,两种情况的处理方向完全不同。
修复时的判断原则
并不是所有 nofollow 都要去掉。外部不可控链接、明显的广告位、用户生成内容中的可疑链接,加 nofollow 是合理的。真正需要清理的是指向自己站点核心内容的内链。修复顺序建议从导航、面包屑、分页这三类结构性链接开始,它们是抓取路径的主干,改动带来的收益最直接。
修改指令后,抓取行为不会立刻发生变化。建议保存改动前后的日志做对比,观察一到两周,看目标 URL 的抓取覆盖是否在逐步恢复,而不是改完当天就下结论。
复核时可以关注的点
- 响应头中不再出现意外的 X-Robots-Tag,且各 CDN 节点表现一致。
- 导航、面包屑、分页链接的 a 标签中不再有批量注入的 rel=nofollow。
- 页面级 meta robots 的取值与实际意图一致,没有互相冲突的重复声明。
- Sitemap 中提交的 URL 没有被 robots.txt 规则排除在外。
- 抓取日志中这些 URL 的出现频次呈上升趋势,而不是长期为零。
抓取指令的排查不需要复杂工具,关键在于分清三类指令的层级关系,再按链接级、页面级、响应头级的顺序逐层核对,避免把可用入口误当成已失效入口处理。