Front-End-Checklist 的 all-noindex-pages 技能:系统化审计全站 noindex 指令的完整方法
本文基于 all-noindex-pages 技能定义 及其 参考规则文档,讲解如何审计一个站点中所有 noindex 指令的分布与合理性:识别哪些页面使用了 meta 标签或 HTTP 头携带 noindex,验证关键页面(商品、文章)没有被意外屏蔽,并确认 noindex 确实只施加在薄内容、后台和工具类页面上。读完本文,你能掌握一套可落地的 noindex 审计流程、noindex 与 robots.txt disallow 的本质区别,以及结合渲染后 HTML 与响应头进行验证的实操手段。
技能定位:一条 medium 优先级的 SEO 技术规则
在 Front-End-Checklist 仓库中,all-noindex-pages 以「技能(Skill)」的形式组织,供人类审计者和 AI Agent 共同使用。其 SKILL.md 的 frontmatter 声明了它的关键属性:
- category:
seo(SEO 类别) - priority:
medium(中等优先级) - difficulty:
intermediate(中等难度) - estimatedTime:
10(预计耗时 10 分钟) - source:
frontendchecklist.io,规则页面为 frontendchecklist.io 上的en/rules/seo/all-noindex-pages
它的核心判断依据来自 规则内容定义文件:一个错误的 noindex 标签可以把重要页面彻底移出搜索结果,而正确使用它则有助于管理抓取预算(crawl budget)并避免重复内容问题。也就是说,这条规则不是要求「全站不得出现 noindex」,而是要求「每一个 noindex 都必须是有意为之」。
快速参考清单:审计 noindex 的三件事
SKILL.md 给出的 Quick Reference 是整套审计动作的浓缩,也是本条规则的操作骨架:
- 找出所有使用
noindex指令的页面——包括 meta 标签和 HTTP 头(如X-Robots-Tag)两种载体; - 验证关键页面没有被意外屏蔽——商品页、文章页等高价值页面不应出现在 noindex 清单里;
- 确认
noindex正确施加在应该屏蔽的页面上——薄内容(thin content)、后台管理、工具类页面。
对应的 Check 提示词是:Verify that the noindex directive is only applied to pages that should not appear in search results.(验证 noindex 指令只施加在不应出现在搜索结果中的页面上。)Fix 提示词则是:从应该被索引和排名的页面上移除 <meta name="robots" content="noindex">。
正确的 noindex 代码模式
references/rule.md 与 规则定义文件 给出的标准代码示例区分了两种常见场景:
<head>
<!-- 用于「感谢页」或站内搜索结果这类工具页面 -->
<meta name="robots" content="noindex, follow">
<!-- 用于希望被彻底忽略的页面 -->
<meta name="robots" content="noindex, nofollow">
</head>
两者的语义差别在于 follow 与 nofollow:
noindex, follow:页面本身不进索引,但允许爬虫沿页面上的链接继续向外抓取,链接权重(link equity)可以正常传递。适合「感谢页」「内部搜索结果」等不希望被收录、但仍希望站点链接结构被发现的页面;noindex, nofollow:页面不索引,且不允许沿其链接继续抓取,适合需要被彻底隔离的页面。
需要注意的是,noindex, follow 组合虽然在本条规则中被明确推荐为工具页的标准写法,但在代码审查时仍值得逐处确认它是有意配置——Front-End-Checklist 的 MCP 包中就有针对该模式的启发式检测:review-code.ts 会用正则匹配 <meta name="robots" content="..."> 标签,一旦发现同一标签中同时出现 noindex 和 follow,就会提示「verify this is intentional; noindex prevents indexing while follow allows link crawling」。这段逻辑虽然挂在 robots-meta-conflict / schema-noindex-conflict 规则下运行,但体现的正是本条规则「每个 noindex 都值得逐页确认意图」的审计思想。
为什么 noindex 审计很重要
references/rule.md 的「Why It Matters」一节从四个维度说明了价值:
- 可见性(Visibility):防止高价值页面被 Google 和 Bing 意外排除;
- 抓取预算(Crawl Budget):帮助搜索引擎把有限的抓取资源集中到最重要的页面上;
- 反索引(De-indexing):可以不用删除页面就把过时或敏感页面从搜索结果中移除;
- 策略性控制(Strategic Control):允许你管理哪些内容版本(例如带筛选条件的列表页)可以被索引。
深入辨析:noindex 与 robots.txt 的 disallow 不是一回事
SKILL.md 的 Explain 环节明确要求:解释 robots.txt 中 noindex 与 disallow 的区别,以及何时该用哪一个。 这一点在仓库的关联规则 robots-meta-conflict.mdx 中有完整的展开,也是 noindex 审计中最容易踩的坑。
核心机制是:如果某个 URL 被 robots.txt 的 Disallow 规则屏蔽,爬虫根本不会抓取该页面,因此永远不会读到页面里的 noindex meta 标签。于是出现一个反直觉的悖论——你以为「屏蔽 + noindex」是双重保险,实际上 Google 可能仅凭外部反链的锚文本就把这个 URL 展示在搜索结果里。
该规则文档给出的速查表清晰地列出了各场景下两种信号的正确组合:
| 目标 | robots.txt | meta robots |
|---|---|---|
| 允许抓取与索引 | 无 Disallow | index, follow(默认) |
| 反索引页面、保留链接权重 | 无 Disallow | noindex, follow |
| 阻止抓取(不保证反索引) | Disallow: /path/ |
(无意义——不会被读取) |
| 屏蔽私密工具内容 | Disallow: /path/ |
(不需要) |
落到实操上:
- 要反索引一个页面:确保 robots.txt 中没有该路径的 Disallow 规则,保留
<meta name="robots" content="noindex, follow">。Googlebot 会抓取页面、读到 noindex,再将其移出搜索结果; - 要彻底隔离一个环境(如 staging):在 staging 域名的 robots.txt 中
Disallow: /即可,此时页面内的 noindex 标签无关紧要; - 典型的错误组合:robots.txt 写了
Disallow: /old-page/,页面里又放了<meta name="robots" content="noindex">——这个 noindex 永远不会被处理,页面反而可能因为反链信号被索引。
代码审查(Code Review)要点
SKILL.md 的 Code Review 环节给出了明确的审查范围:
审查与「审计所有 noindex 页面」相关的元数据生成逻辑、渲染后 HTML、结构化数据和响应头。指出搜索结果输出违反规则的精确路由或模板,并说明如何验证最终页面输出。
这提示审计不能停留在源码层面——由于 noindex 可能在构建管线、中间件或边缘函数中动态注入,SKILL.md 的 AI 上下文也强调:Verify the rendered HTML and HTTP response rather than relying only on source files.(要验证渲染后的 HTML 与 HTTP 响应,而不是只看源文件。)
具体审查时可以按以下顺序排查:
- 元数据生成层:检查 Next.js 的
metadata/robots配置、模板中的 meta 标签,确认哪些路由会输出noindex; - 响应头层:抓取实际响应,检查
X-Robots-Tag头是否携带noindex; - 交叉比对:把 noindex 清单与 sitemap 对照——noindex-in-sitemap 规则 指出,把已 noindex 的 URL 写进 XML sitemap 会向爬虫发送矛盾信号,浪费抓取预算;sitemap 应只列出规范 URL、可索引、200 状态的地址;
- 冲突信号:检查 canonical、重定向与 robots 指令之间是否存在矛盾,这属于 indexability-conflicts 规则 的关注范围。
例外情况:这些 noindex 可能是合理的
references/rule.md 与 all-noindex-pages.mdx 的 Exceptions 一节明确列出三类不应简单判定为问题的例外:
- Staging、工具页、登录页、账户页或站内搜索页,如果本就不打算参与排名,可以有意识地使用不同的抓取或索引信号;
- 临时迁移状态可能产生嘈杂的中间信号——审计时应标记生产环境中的 URL 模式,而不是一次性的过渡性产物;
- 当重定向、canonical、robots 指令或可索引性信号相互冲突时,应优先修复最强的最终信号,而不是把每个下游症状都当成独立的阻断项报告出来。
第三条尤其重要:noindex 问题经常是更上游配置错误的「症状」,审计的产出应该指向根因信号。
验证流程:自动化检查与人工检查
规则的 Verification 一节把验证手段分为两类,这也是审计完成后应执行的收尾动作:
自动化检查(Automated Checks)
- 检查渲染后的 HTML 和 HTTP 头,确认预期的元数据或可抓取性信号确实存在;
- 在适用时,用 Google Search Console 或等效工具测试受影响的 URL;
- 部署后重新爬取一组代表性页面,确认变更生效。
人工检查(Manual Checks)
- 确认这次变更没有制造出新的 canonical URL、robots 指令或结构化数据之间的冲突信号。
标准依据与相关规则
按照 all-noindex-pages.mdx 的 frontmatter,本规则在判定为「满足」之前,应以 Google Search Central 的 Search Essentials 指南与 Google Search Central 文档为标准来核对最终面向搜索的 HTML、元数据与抓取行为;实际验证中推荐借助 Google Search Console 这类工具。
在仓库的规则体系中,all-noindex-pages 与以下规则同属 seo/technical 领域、常被一起审查(见 all-noindex-pages.mdx 的 relatedRules):
- indexability-conflicts——可索引性信号冲突的总排查规则;
- robots-meta-conflict——robots.txt Disallow 与 noindex meta 并存、导致 noindex 永远不被读取的悖论;
- indexability——页面可索引性的基础规则;
- schema-noindex-conflict——结构化数据与 noindex 信号之间的矛盾。
小结
all-noindex-pages 技能的价值不在于发现「有没有 noindex」,而在于建立一张全站 noindex 清单并逐页回答「这个 noindex 是不是有意为之」。正确的姿势是:工具页、感谢页使用 noindex, follow 让链接继续传递;需要反索引的页面保持可抓取、只靠 meta 标签或响应头发出 noindex;staging 环境则直接在 robots.txt 层面整体屏蔽。审计时始终记住两点:验证对象是渲染后的 HTML 与 HTTP 响应而非源码,以及冲突信号出现时先修根因再谈症状。
atomcodeClaude Code 的开源替代方案。连接任意大模型,编辑代码,运行命令,自动验证 — 全自动执行。用 Rust 构建,极致性能。 | An open-source alternative to Claude Code. Connect any LLM, edit code, run commands, and verify changes — autonomously. Built in Rust for speed. Get StartedRust0622
Hy4-previewHy4 preview 是由腾讯混元团队研发的新一代混合专家(MoE)旗舰模型。模型总参数量 770B,每个 token 激活 49B,主干共包含78层,第一层采用标准 FFN,其余 77 层均为 MoE 结构,每层包含 256 个路由专家与 1 个共享专家,每个 token 激活 top-8 路由专家及共享专家。主干之外原生内置 1 层 MTP(总参数量 10B,激活 0.7B)以支持投机解码。Python00
GLM-5.3GLM-5.3 与 GLM-5.2 使用相同的基座模型——所有提升均来自后训练。与 GLM-5.2 相比,它在复杂编程和长程任务上的表现显著提升。Jinja00
GLM-5.3-FlashGLM-5.3-Flash (320B-A18B),是GLM-5系列的首个原生多模态模型。320B总参数,能力超过GLM-5.2Jinja00
Spark-X2.5-4BSpark-X2.5-4B 旨在让强大的 AI 更实用、更高效、更易获得。在广泛日常任务中表现强劲,涵盖对话、写作、翻译、推理、编码、工具调用以及智能体工作流,并在同等规模的开源模型中取得领先成绩。Spark-X2.5 将面向效率的架构与最高 1M tokens 的原生上下文窗口相结合,并支持 200 多种语言。Python00
Spark-X2.5-1.7BSpark-X2.5-1.7B 旨在让强大的 AI 更加实用、高效且易于获取。这些模型在广泛的日常任务中表现出色,涵盖对话、写作、翻译、推理、编程、工具调用和智能体工作流,并在同等规模的开源模型中取得领先结果。Spark-X2.5 将面向效率的架构与最高 1M tokens 的原生上下文窗口相结合,并支持 200 多种语言。Python00