很多站长在运营蜘蛛池入口页时,会顺手加上 noindex,本意是不想让这些页面出现在搜索结果里,同时又希望搜索蜘蛛照常来、照常顺着链接抓到目标 URL。这个思路本身没有大问题,但前提是你要分清 noindex 和 nofollow 管的是两件不同的事。
noindex 到底管什么
noindex 是一个索引指令,作用对象是当前这个页面,意思可以简单理解为:这个 URL 不用出现在搜索结果里。它并不等于不要抓取,更不等于不要跟随页面里的链接。在没有额外写 nofollow 的情况下,搜索蜘蛛抓到页面后,仍然可以读取页面里的 a 标签链接,并按自己的调度去尝试抓取目标 URL。
从流程上看,抓取分成几步:发现 URL、抓取页面、解析页面、跟随链接、决定是否索引。noindex 主要作用在最后一步,对前面几步没有直接阻断作用。
真正会切断链接的是 nofollow 和 robots.txt
如果你写的是 noindex, nofollow,那就是另一回事了。nofollow 会让搜索蜘蛛在解析页面时降低甚至放弃对页面内链接的跟随,目标 URL 通过这条路径被发现的机会基本就没了。
另一个更容易被忽略的是 robots.txt。如果入口页本身被 Disallow 挡住,搜索蜘蛛根本不会去抓这个页面,也就看不到页面里的 noindex 标签,更看不到链接。不少人以为 robots.txt 加 noindex 是双保险,实际上这两个组合起来经常互相抵消,结果和预期完全不同。
一句话记法:noindex 管我进不进搜索结果,nofollow 管我的链接被不被跟随,robots.txt 管我能不能被抓。
加了 noindex 之后,链接发现会变慢吗
理论上链接照样能被发现,但实际运营中你会观察到一些间接变化:
- 入口页不进入索引,缺少来自搜索结果页的曝光,搜索蜘蛛重新访问这个页面的频率可能下降。
- 如果页面内容长期没有变化,抓取优先级本来就会降低,链接被重复发现的节奏也会跟着变慢。
- 新链接出现后,搜索蜘蛛需要重新抓一次入口页才能看到,这一步的速度取决于它对入口页的抓取调度。
所以能跟和跟得快是两件事。noindex 不会直接掐断链接,但可能让入口页本身的抓取节奏变慢,从而拖慢目标 URL 的发现速度。
几种写法的实际差别
- noindex:页面不进索引,链接默认仍然可跟随。
- noindex, nofollow:不进索引,同时不跟随链接,目标 URL 基本不会被这条路径发现。
- X-Robots-Tag: noindex:写在 HTTP 响应头里,效果等同于 meta 写法,适合非 HTML 文件。
- robots.txt Disallow:搜索蜘蛛不抓页面,页面里的任何指令和链接都看不到。
运营上的几条建议
- 先想清楚目的。如果只是不想入口页被收录,用 noindex 通常就够了,不要顺手加 nofollow。
- 检查入口页有没有被 robots.txt 挡住。被挡住的话,页面里的标签基本等于没写。
- 保持入口页里有可抓取的链接,最好是普通的 a 标签,链接目标指向明确。
- 通过服务器日志观察搜索蜘蛛对入口页的访问频次,用实际数据判断发现速度,而不是凭感觉。
- 入口页数量多的时候,没必要每一页都堆同样内容,抓取调度对重复页面的兴趣通常不高。
常见的两个误区
第一个误区是,加了 noindex 就等于放弃这条链接。只要没写 nofollow,链接依然是可跟随的。
第二个误区是,noindex 和 robots.txt 一起用更保险。如果 robots.txt 挡住了页面,搜索蜘蛛看不到 noindex,页面反而可能因为外部链接被收录,结果和你想的相反。
最后提醒一句:指令只是表达你的意愿,具体抓不抓、什么时候抓、跟不跟链接,仍然由搜索引擎自己的判断决定。noindex 能降低入口页进入索引的概率,但不能保证链接一定被抓、目标 URL 一定被发现,效果还是需要结合日志长期观察来判断。