很多站点在排查抓取问题时,第一反应是去看 robots.txt,却忽略了页面源码里的 meta robots 标签。robots.txt 管的是“要不要来抓”,meta robots 管的是“抓到了要不要收、页面上的链接要不要跟”。两者作用范围不同,出问题的表现也不同。一个写错的 noindex 不会报错,也不会让页面打不开,只是安安静静地把页面挡在索引之外。
noindex 常见的几种来源
noindex 很少是有人故意加的,多数来自模板、插件、复制粘贴和上线前的临时设置。以下几类情况最容易遗留:
- 测试环境或预发环境上线时,直接把带 noindex 的模板带进了正式环境。
- 栏目页、标签页、搜索结果页批量套用了统一的“防薄页”模板,结果把需要收录的列表页一起挡了。
- 分页和筛选参数页为了控制 URL 数量统一加了 noindex,后来改版时业务页恰好也落在同一套模板里。
- 页面迁移后,旧地址被改成 noindex 而不是 301 跳转,新地址又没有同步替换进来。
- CMS 里“发布状态”和“索引状态”绑在一起,编辑调整发布时间时顺手关掉了索引开关。
自查步骤
- 先全站抓一份 HTML,提取所有页面的 meta robots 标签,同时记录 HTTP 响应头里的 X-Robots-Tag,看看哪些页面带了 noindex、nofollow 或 none。
- 把结果按栏目归类,标出“确实应该挡的”和“不该挡的”。站内搜索结果页、筛选参数页、登录后的后台页挡掉是合理的;栏目首页、文章详情、需要参与搜索的聚合页被挡,就要确认原因。
- 重点核对响应头。有些站点的 noindex 不在 HTML 里,而是由服务器或 CDN 统一加上去的,只看源码容易漏掉。
- 确认 noindex 与 canonical 是否冲突。一个页面既声明了规范地址,又给自己加了 noindex,处理逻辑会变得难以预期,通常应该二选一。
- 检查是否顺手加了 nofollow。多数场景只需要 noindex,额外加 nofollow 会让页面上的链接也失去传递价值,除非确实不希望被跟踪。
- 把改动写进上线清单,避免下次换模板时又被覆盖回来。
几个容易混淆的点
robots.txt 里的 Disallow 只是不让抓,页面仍可能因为外链被索引成一个没有摘要的地址;meta robots 的 noindex 需要蜘蛛真正抓到页面才能生效。两者配合不当会互相抵消。
- noindex 不等于删除:页面照样能访问,只是不进索引。想彻底移除,需要配合 404 或 410。
- noindex 生效有延迟:蜘蛛要重新抓取该页面后才会读到新标签,改完立刻查不到,不代表没生效。
- 被 robots.txt 挡住的页面,蜘蛛读不到 noindex:如果既 Disallow 又指望 noindex 生效,通常行不通。
改动之后怎么验证
改完不要只看首页。优先复查三类地址:原本次要但确实需要收录的栏目页、改版后新生成的详情页模板、以及带参数的筛选页。用站点地图和抓取工具各跑一遍,确认目标页面的标签已经恢复为 index、follow,也没有遗留的自定义指令。同时留意响应码,noindex 页面如果仍返回 200,说明它还在被正常抓取,只是不进索引,这属于预期状态,不必再额外处理。
meta robots 是个很轻的标签,但它决定的是页面能不能进入搜索结果的入口。把它纳入常规的站点自查清单,每次改版、换模板、开新栏目时顺手过一遍,比等到流量下滑再回头排查要省事得多。