蜘蛛池入口页常见的一种做法是:页面本身可以正常访问,但不希望入口页自己被收录,于是在 Nginx、Apache 或 CDN 上加了一行 X-Robots-Tag。问题随之而来——加了之后,搜索蜘蛛还会不会继续跟进页面里的目标链接?答案取决于你写的是 noindex 还是 nofollow,这两者对链接跟进的影响完全不同。
X-Robots-Tag 和 meta robots 的区别在哪
meta robots 写在 HTML 的 head 里,只有搜索蜘蛛成功下载并解析 HTML 之后才可能生效;X-Robots-Tag 写在 HTTP 响应头里,爬虫在读响应头阶段就能拿到指令。
- 作用范围更广:图片、PDF、视频等非 HTML 资源用不了 meta 标签,只能靠响应头传递指令。
- 不依赖页面解析:即使 HTML 下载到一半中断,响应头里的指令依然会被读到。
- 容易和 meta 冲突:同一份指令写在两处时,以搜索引擎实际实现的规则为准,建议只保留一处,避免自己都记不清写过什么。
noindex 和 nofollow 对目标链接的影响
这是入口页运营里最容易混淆的一点:
- X-Robots-Tag: noindex —— 只是告诉搜索引擎不要把入口页本身放进索引。页面通常仍可被抓取,页面里的链接一般也仍会被发现和跟进。对蜘蛛池入口页来说,这往往是想要的效果:藏住入口页,放过目标 URL。
- X-Robots-Tag: nofollow —— 表示不要跟随页面上的链接。这会直接掐断从入口页到目标 URL 的发现路径,等于白建一个入口页。
- 两者叠加在同一个响应头里时,入口页既不收录、链接也不被跟,基本只剩“存在过”的意义。
nofollow 在主流搜索引擎里多为提示性质而非硬性禁止,但把它当成可靠开关来用并不划算——你无法确定对方是否采纳。想让链接被跟,就别在入口页上加 nofollow。
入口页设置时的几个实操点
- 想隐藏入口页本身,优先考虑 noindex,而不是用 robots.txt 整段屏蔽。被 robots.txt 挡住的 URL,搜索蜘蛛不会去读取内容,自然也看不到里面的链接。
- 不要顺手加上 noarchive、nosnippet 之后又忘了,指令越堆越容易互相打架,排查成本也越高。
- 语法上指令名不区分大小写,但值要写对,多个指令之间用英文逗号分隔,例如 noindex, nofollow。
- 如果站点同时存在 meta 和响应头两套指令,先清理到只剩一处,再做测试,别在叠加状态下判断效果。
怎么确认搜索蜘蛛实际收到的响应头
不能只看服务器配置文件,因为 CDN、反向代理、缓存层都可能改写或补充响应头。
- 用 curl -I 直接请求入口页 URL,看返回头里有没有 X-Robots-Tag,值具体是什么。
- 换一个常见的搜索蜘蛛 UA 再请求一次,部分站点会按 UA 返回不同内容,两者需要对比。
- 清一次 CDN 缓存再测,避免测到的其实是旧响应头。
- 结合服务器日志核对蜘蛛 UA 与真实抓取记录,判断指令是否真的被读到。
常见误区
有人以为加了 noindex 就等于入口页对搜索蜘蛛隐身,其实入口页仍可能被抓取,只是不进索引;也有人以为响应头里的指令一定比 meta 优先,实际以搜索引擎文档和实测结果为准。对蜘蛛池运营来说,判断标准只有一个:目标 URL 有没有被稳定发现和抓取,而不是入口页有没有被收录。指令配置完成后,观察几天日志里的抓取记录,通常比反复纠结标签写法更有意义。