先分清:robots.txt 管“能不能读”,meta 管“读完怎么处理”
robots.txt 在抓取之前生效,蜘蛛看到 Disallow 通常就不来读页面;而 meta robots 标签写在 HTML 的 head 里,前提是蜘蛛已经把页面抓下来了。所以如果 robots.txt 已经把入口页挡住,meta 里写什么其实没人看得到。排查时的顺序应该是:先看服务器日志有没有抓取请求,再看响应内容里有没有 meta 指令。
noindex 最容易被“顺手复制”
noindex 的意思是“不要把这一页放进索引”。对入口页来说它往往是致命的:入口页存在的意义就是被发现、被跟进,被 noindex 之后,蜘蛛可能仍然抓取,但不会把它当成有效的落点,链接传递的判断也会变得模糊。
- 从别的项目模板复制来的 head,带着一行 noindex 一直没删。
- 测试环境为了防止被爬加过 noindex,上线时忘了去掉。
- 用 CMS 或建站程序批量生成入口页,插件默认给所有页面加了 noindex。
- 以为“入口页本来就不需要被收录”就随手加上,结果链接库的作用被大幅削弱。
检查方式很简单:把入口页 URL 抓下来,直接在 head 里搜 noindex,别只看后台设置界面。
nofollow 用多了,出链就白挂了
入口页常需要挂一些导航、友链、聚合链接。如果给这些链接统一加 rel="nofollow",等于告诉蜘蛛“这些链接不必跟”。当整个入口页的出链几乎全是 nofollow 时,页面在链接发现上的作用就会被削弱。
更稳妥的做法是按用途区分:真正希望被跟进的链接保持默认,明显的广告位、后台入口、无意义跳转再加 nofollow;不要用一行全局规则把整页出链一刀切。
canonical 指错地方,等于自己交出归属
canonical 表达的是“这一页的正规版本是哪个 URL”。入口站常见的问题有:
- 所有入口页都 canonical 到首页,等于告诉蜘蛛每个入口页都是首页的副本。
- 多个入口域名共用一套模板,canonical 里写着主站域名,把归属指向了别处。
- canonical 写成带参数的版本,或者 http/https、带 www 与不带 www 混着写。
入口页一般更适合 canonical 自指,也就是指向自己的规范 URL,并保持协议、主机名、路径一致。改版或换域名时,canonical 要和 301 一起调整,别只改其中一个。
顺带提两个容易被忽略的标签
meta keywords 早已不参与判断,堆一串关键词没有实际作用,反而容易暴露模板痕迹。meta refresh 用来做跳转时,蜘蛛的处理方式不如 301/302 明确,延迟设得太长也可能让人和蜘蛛都困惑;入口页需要跳转时,优先考虑状态码跳转。
可以定期跑的检查清单
- 随机抽 10 到 20 个入口页,抓取源码,确认 head 里没有意外的 noindex、nofollow。
- 确认 canonical 与页面自身 URL 一致,协议、主机名、路径都没写错。
- 对比 robots.txt 与 meta 指令,避免一处放行、一处拦截。
- 把这几项写进上线流程,模板改动后重跑一遍。
- 观察蜘蛛日志里的抓取量与响应状态,判断指令调整后的实际表现。
meta 指令本身不会带来抓取,它只决定蜘蛛读到页面之后怎么处理。入口页的日常工作,是把这些不该有的限制清掉,而不是指望某个标签能带来额外好处。