有些站长在做蜘蛛池时,会希望入口页只给搜索蜘蛛看,于是想到用 robots.txt 把入口页本身屏蔽掉,只保留页面上的目标链接被抓。思路听起来成立,实际执行时却经常直接把 URL 发现这条路堵住。
Disallow 究竟拦住了什么
robots.txt 里的 Disallow 只解决一件事:请求遵守协议的爬虫不要抓取某个路径。它不负责收录与否,也不是权重开关,更不会因为页面看起来没用就自动放过。
真正的问题在这里:爬虫不抓这个页面,就看不清页面上写的链接。入口页存在的意义就是承载目标 URL,一旦入口页在抓取层被拦掉,页面里的链接对爬虫等于不存在——除非这些目标 URL 还能从 sitemap、站外链接或其他入口页被发现。
被拦页面上的链接不会平移过去
常见误解是页面不让抓,但链接照样能被跟着走。链接的可发现性依赖页面被抓取和解析这两个动作,少了前一步,后面就无从谈起。少数例外是目标 URL 同时出现在别处,那也与这个入口页无关了。
想让入口页不进索引,可以怎么做
如果动机只是不想让入口页出现在结果页里,例如页面很薄、内容重复、结构像目录页,又不希望影响链接被发现,可以考虑让抓取通过、让索引走开:
- robots.txt 中允许爬虫抓取入口页路径,不要写全局 Disallow。
- 在入口页 head 中加 meta name="robots" content="noindex, follow",或在响应头里加 X-Robots-Tag: noindex, follow。
- noindex 负责这一页不要进索引,follow 表示链接仍可被抓取,两者配合才是这种场景的常用做法。
- 注意顺序:如果 robots.txt 已经禁止抓取,爬虫读不到页面,也就永远看不到 noindex,这条规则会失效。
至于 noindex 之后的链接会不会传递权重,各家搜索引擎的表述并不完全一致,不要把入口页不被索引当成权重照常传递的保证。
只想挡住普通访客怎么办
如果目的是减少人工浏览,可以在页面上做视觉层面的处理,或者按业务规则判断访问来源,但要清楚这类手段和搜索引擎抓取是两回事,做过头容易出现爬虫与用户拿到不同内容的问题。
入口页抓不到的排查顺序
- 用搜索引擎站长工具里的 robots.txt 测试功能,确认入口页 URL 是否处于可抓状态。
- 查看服务器日志,看目标爬虫有没有真的请求过入口页,还是只请求了首页。
- 检查是否在 robots.txt 里写了 Disallow: / 之类的全局规则,或误伤了入口页所在目录。
- 检查入口页是否被防火墙、WAF、CDN 规则拦截,或返回了非 200 状态。
- 确认入口页 HTML 里确实存在可解析的链接,而不是靠脚本在页面加载后才插入。
robots.txt 是抓取请求的通行规则,不是排名和索引的开关。想隐藏入口页,先保证它还能被抓;抓不到,再谈索引和链接就是空谈。
把这两件事分开看会清楚很多:抓取层决定爬虫能不能看到链接,索引层决定这一页要不要出现在结果里。入口页的价值在抓取层,所以优先保住抓取,再去处理索引与展示。