在蜘蛛池的实操里,robots.txt 和 canonical 属于平时不显眼、出问题时又很难定位的那类设置。入口站的页面能被蜘蛛发现,但蜘蛛抓不抓、抓完把信号算给谁,往往就卡在这两处。下面按入口站、入口页、目标页三个层次,把常见写法和判断依据理一遍。
先分清两件事:能不能抓,和算谁
robots.txt 管的是抓取许可,它决定蜘蛛能不能访问某个路径;canonical 和 meta robots 管的是页面被怎么处理,决定抓到的这一页被当作正式版本还是一次性副本、要不要进索引。这两者互相独立,一个放行并不代表另一个没问题。不少“蜘蛛来了却没留下痕迹”的情况,最后查出来是入口页被 noindex,或者 canonical 指到了别处。
入口站 robots.txt 的常见写法问题
整站 Disallow 是最常见的自伤
有些入口站为了不让别人看到后台或临时目录,直接写了 User-agent: * 加 Disallow: /。这条规则对正规蜘蛛来说就是明确的拒绝,后面铺再多入口页也不会被访问。更隐蔽的是复制模板时,把测试环境的那份 robots.txt 一起带到了线上。
按路径屏蔽时要留出可抓的口子
- 只屏蔽后台、站内搜索参数页、重复的排序页,保留正常内容路径可抓;
- 避免用通配符把带查询参数的正常内容页一起屏蔽掉;
- robots.txt 本身要能正常返回,返回异常状态时不同蜘蛛的处理并不一致;
- 改完不要指望立刻生效,蜘蛛有自己的重访节奏。
meta robots 与 X-Robots-Tag:noindex 别用错地方
入口页的定位是被发现、被访问、把蜘蛛送出去,所以它需要能被抓取,通常也需要被索引,否则连被发现的机会都会变小。给入口页加 noindex 是常见的反向操作:蜘蛛抓到了,但页面进不了索引,长期看入口站自身的可见度会越来越低。
X-Robots-Tag 写在响应头里,效果和 meta robots 类似,也最容易被忽略。如果服务器或 CDN 的默认配置里带了这条头,页面源码看起来完全正常,问题却出在响应头。排查时把响应头完整看一遍,别只盯着 HTML。
入口页的 canonical 该指向哪
指向目标站
这样做等于告诉搜索引擎“这一页的正式版本在别人家”。短期看信号似乎集中到了目标页,但入口页自身会被当作副本处理,之后再想靠它铺量就缺少基础。除非你明确只想做一次性的跳板,否则不建议这么写。
指向自己
入口页的内容是自己组织的,canonical 指向自身是最常见也最稳妥的做法。注意写法要和实际解析一致,带不带 www、结尾带不带斜杠,最好统一。
指向另一个入口页
批量建站时,如果模板里写死了同一个 canonical,会导致所有入口页都指向同一页。结果往往只有一个页面被当作正式版本,其余页面的抓取价值被大幅削弱。这类问题在铺量之后才被发现,返工成本很高。
出站链接要不要加 nofollow
从入口页指向目标页的链接,加不加 nofollow 需要分开看。nofollow 并不会阻止蜘蛛顺着链接走,它主要影响的是信号传递。如果通往目标页的链接全部标成 nofollow,等于告诉搜索引擎这些链接不背书,整条链路的引导意义会被削弱。反过来,如果入口页混着大量无意义的导出链接,该处理的是那些链接,而不是一刀切全部加上。
上线前的检查清单
- 访问入口站根目录,确认 robots.txt 能正常返回,且规则符合预期;
- 抽查入口页源码,确认 meta robots 没有 noindex、canonical 指向自身;
- 查看完整响应头,确认没有意外的 X-Robots-Tag;
- 确认入口页到目标页的链接是普通 a 标签、可直接访问、不需要登录或验证;
- 结合服务器访问记录,确认蜘蛛确实访问了入口页,而不是只读了 robots.txt 就走了。
把 robots 和 canonical 当成一次性配置、上线后不再回看,是这类问题反复出现的根源。入口站一多,模板里的一行错误就会被复制到所有站点上。
这两项设置本身不复杂,关键是和入口页的用途保持一致:能被抓、能被索引、归属清楚、链接能被跟进。这四点稳住了,再去讨论更新频率、抓取深度和淘汰替换,才有比较的意义。