Front-End Checklist 技术 SEO 指南:发布规范的 robots.txt 文件与源码级验证
【免费下载链接】Front-End-Checklist🗂 The essential checklist for modern web development, for humans and AI agents项目地址: https://gitcode.com/gh_mirrors/fr/Front-End-Checklist
robots.txt是搜索引擎爬虫访问网站时获取的第一个文件,它通过纯文本指令控制爬虫允许访问的路径。在 Front-End Checklist 项目中,该规则被归类为seo/technical类别、high优先级、beginner难度的基础技术 SEO 规则(见 skills/robots-txt/SKILL.md 与 packages/content/rules/en/seo/robots-txt.mdx),适用于任何公开网站,常用于审计技术 SEO 地基或诊断抓取覆盖率(crawl coverage)缺口。读完本文,你将掌握 robots.txt 的语法规范、常见误配置、验证方法,以及 Front-End Checklist 网站本身在 Next.js 中如何生成这一文件。
核心结论:为什么 robots.txt 是 SEO 的第一道关卡
robots.txt 是位于域名根路径的纯文本文件,告诉爬虫允许访问哪些路径。所有主流搜索引擎在抓取任何其他资源之前都会先读取它,因此它的配置错误会带来一个隐蔽而致命的后果:指令误配可能悄无声息地阻止搜索引擎抓取整个站点,直接扼杀自然搜索可见性。这一判断正是该规则whyItMatters字段的核心表述,也是整个技能文档反复强调的出发点。
换句话说,robots.txt 不会提升你的排名,但它可以成为流量的"总开关"——一旦写错,其他所有 SEO 工作都可能白费。
Quick Reference:四条必须牢记的要点
来自 skills/robots-txt/SKILL.md 的快速参考浓缩了本规则的全部要点:
- 在生产域名的
/robots.txt路径上提供合法有效的 robots.txt,返回HTTP 200; - 必须包含指向 XML 站点地图的
Sitemap:指令; - 永远不要禁止爬虫抓取渲染页面所需的 CSS/JS 静态资源;
- 避免在生产站点上用
Disallow: /屏蔽所有爬虫。
这四条是"检查 → 修复 → 解释 → 代码评审"整个工作流的核心基准。
Check:如何检查线上 robots.txt
技能文档给出的检查动作是:
抓取线上域名的/robots.txt,确认它返回 HTTP 200,使用正确的User-agent/Disallow/Allow语法,并包含指向 XML 站点地图的Sitemap:指令;同时检查是否存在意外的Disallow: /指令。
实际执行时可以用一条 curl 命令快速确认:
curl -I "$ORIGIN/robots.txt"其中$ORIGIN替换为你的生产域名,例如https://www.example.com。如果返回200 OK,说明文件可达;若返回 404 或 5xx,则意味着文件缺失或服务器异常。
Fix:如何创建或修正 robots.txt
当检查发现问题时,修复动作包含三步:
- 在web 根目录(网站的根路径)创建或更新
robots.txt,写入合法指令; - 添加指向生产环境站点地图真实 URL的
Sitemap:行; - 删除任何屏蔽整个站点或渲染所需资源的
Disallow: /规则。
标准代码示例
规则文档(packages/content/rules/en/seo/robots-txt.mdx)给出的最小可用示例:
User-agent: * Disallow: /admin/ Disallow: /private/ Allow: / Sitemap: https://www.example.com/sitemap.xml这份配置的含义是:对所有爬虫开放站点主体,仅屏蔽管理后台和私有目录,并向爬虫宣告站点地图位置。它是"精确屏蔽 + 明确放行 + 声明 sitemap"的标准组合。
常见错误:三种典型误配置对照
规则文档专门用一节列出常见错误,逐一对照有助于在评审中快速命中问题。
❌ 错误一:屏蔽整个站点
User-agent: * Disallow: /这会让任何页面都无法被抓取和索引。修复方法是删除该规则,或将其替换为具体路径。这是所有误配置中后果最严重的一种——站点可能因此从搜索结果中整体消失(delist)。
❌ 错误二:屏蔽 CSS 和 JavaScript
User-agent: Googlebot Disallow: /assets/Googlebot 依赖 JavaScript 渲染页面,屏蔽/assets/会阻止它看到你的真实内容。现代搜索引擎普遍采用"渲染式索引"(rendering-based indexing),CSS/JS 被屏蔽后,即使 HTML 允许抓取,渲染出的实际页面内容依然无法被正确理解。
✅ 正确做法:只屏蔽后台与内部路径
User-agent: * Disallow: /admin/ Disallow: /cart/ Disallow: /checkout/ Allow: / User-agent: Googlebot-Image Disallow: /images/internal/ Sitemap: https://www.example.com/sitemap.xml这个示例展示了两个关键进阶点:
- 按 User-agent 分组规则:第一部分作用于所有爬虫(
*),屏蔽后台、购物车、结账页;第二部分单独针对Googlebot-Image,只屏蔽内部图片目录,不影响对图片搜索友好的外部图片; Allow: /与Disallow并用:在屏蔽具体路径的同时显式放行站点其余部分,避免语义歧义。
Rules:五条语法与行为规则详解
规则文档列出五条硬性规则,这是判断 robots.txt 是否合规的判定标准:
| 规则 | 说明 |
|---|---|
文件必须位于生产域名的/robots.txt精确路径 | 拼写、大小写、路径都不能错,否则爬虫找不到文件 |
| 必须返回 HTTP 200 | Google 将 4xx 视为"无限制",5xx 则会阻止抓取——404 不会保护你的页面,反而意味着规则不存在 |
User-agent: *作用于所有爬虫 | 需要对特定爬虫定制策略时,使用具体 bot 名称(如Googlebot、Googlebot-Image) |
Disallow:空值表示"允许一切" | 这是默认行为,即不写 Disallow 就代表不设限制 |
Sitemap:指令必须是绝对 URL | 必须包含完整协议与域名,如https://www.example.com/sitemap.xml |
其中"HTTP 状态码语义"值得特别强调:很多人以为返回 404 就"安全"了,但 Google 对 4xx 的处理是"没有限制",而对 5xx 是"阻止抓取"。换句话说,一个挂掉(5xx)的 robots.txt 反而会拖累整站抓取,这是验证阶段必须监控的状态。
Exceptions:何时可以有例外
规则文档明确列出允许偏离的异常场景,避免评审误报:
- 暂存(staging)、工具类、登录页、账户页、站内搜索页等无意参与排名的页面,可以有意使用不同的抓取/索引信号;
- 临时迁移状态会产生噪声性的中间信号,应标记线上生产环境的 URL 模式,而非一次性过渡产物;
- 当重定向、canonical、robots 指令、索引性信号互相冲突时,应优先修复最强的最终信号,而不是把每个下游症状都单独报为阻塞项。
Standards:以官方规范为最终依据
规则要求以以下资料作为最终搜索面 HTML、元数据与抓取行为的判定标准,在判定规则满足之前,先对照标准核验实现:
- Google 官方的 robots.txt 介绍文档;
- Robots Exclusion Protocol(RFC 9309)——robots.txt 的标准化规范。
在项目源码中,这两项标准被登记在 packages/content/rules/en/seo/robots-txt.mdx 的sources字段中,role分别为search与standard,authority均为primary(一级权威来源),表明它们是该规则的事实基准。
Verification:验证的两种途径
自动化检查
- 使用Google Search Console → Settings → Robots.txt tester在线测试;
- 直接在浏览器中访问生产域名的
/robots.txt; - 用
curl -I "$ORIGIN/robots.txt"对线上主机发起 HEAD 请求,确认生产文件返回 HTTP 200。
人工检查
抽样审查具有代表性的线上页面,确认不存在改变预期 SEO 结果的更强冲突信号(如更强的 noindex 元标签、重定向或 canonical 指向)。
源码级佐证:Front-End Checklist 自己的 robots.txt 是如何生成的
为了让这条规则"可落地、可验证",仓库本身就是最好的参照实现。Front-End Checklist 网站(Next.js 应用)通过 apps/web/app/robots.ts 在构建期生成 robots.txt:
import { SITE_URL } from '@repo/config' import type { MetadataRoute } from 'next' export default function robots(): MetadataRoute.Robots { return { rules: [ { userAgent: '*', allow: '/', disallow: ['/api/', '/_next/', '/static/'] } ], sitemap: `${SITE_URL}/sitemap.xml`, host: SITE_URL // Note: llms.txt is available at /llms.txt and /llms-full.txt // These files provide LLM-friendly content about this checklist } }对照本文的规则逐条核验这份实现:
- 精确路径
/robots.txt:Next.js 的MetadataRoute.Robots约定式导出自动把该文件输出到站点根路径,无需手写物理文件; - HTTP 200:由框架静态生成,默认 200;
User-agent: *+ 精确屏蔽:对全部爬虫开放根路径(allow: '/'),仅屏蔽/api/、/_next/、/static/这类内部接口与构建产物目录,与"只屏蔽后台与内部路径"的正确示例完全同构;Sitemap:绝对 URL:sitemap字段使用${SITE_URL}/sitemap.xml,其中SITE_URL来自@repo/config配置包,运行时会被替换为生产域名,保证绝对 URL;- 额外的
host字段:声明站点主机名,便于爬虫识别规范主机。
同时,apps/web/proxy.ts 中列出了代理排除清单robots.txt、sitemap.xml等路径,确保这些 SEO 基础设施文件直接透传、不被代理层干扰;而 apps/web/lib/seo-metadata.ts 中的baseMetadata则通过robots: { index: true, follow: true, googleBot: {...} }配置了页面级元数据索引信号,与 robots.txt 形成"站点级 + 页面级"双层抓取控制。
从这个实际案例可以提炼出可迁移的落地模式:用框架的约定式 API(如 Next.js 的MetadataRoute.Robots)代替手写静态文件,把SITE_URL等环境变量集中管理,并用源码评审保证规则一致性。
Code Review:评审搜索面输出时的检查清单
技能文档的 Code Review 环节要求:评审与"发布 robots.txt 文件"相关的元数据生成、渲染出的 HTML、结构化数据和响应头,标记违反规则的精确路由或模板,并说明如何验证最终页面输出。具体可参考如下清单:
- 确认
/robots.txt路由存在且返回 200,而非依赖 SPA 客户端路由兜底; - 检查
robots.ts(或等价实现)中的rules数组:是否存在disallow: '/'之类的全局屏蔽; - 核对
Sitemap:指向的是生产环境的真实 sitemap URL,不是临时域名; - 交叉检查页面级
noindex元数据(如 apps/web/lib/seo-metadata.ts 中noIndex参数)与 robots.txt 是否矛盾; - 用
curl -I对线上主机验证最终输出,而不是只看本地构建结果。
关联规则:与同类 SEO 技术规则协同评审
在 Front-End Checklist 的规则体系中,robots-txt 不是孤立的。其在 packages/content/rules/en/seo/robots-txt.mdx 的relatedRules字段中声明了四组经常一起评审的邻居规则:
- sitemap:同属
seo/technical,robots.txt 中的Sitemap:指令直接引用 sitemap,二者必须配对检查; - indexability-conflicts:处理索引信号冲突时的优先级判定;
- noindex-in-sitemap:sitemap 中出现 noindex 页面属于矛盾信号;
- robots-meta-conflict:robots.txt 与页面级 robots meta 标签冲突时的排查。
这些规则同样被编排进 packages/content/checklists/en/seo-audit.mdx 与 packages/content/checklists/en/launch-checklist.mdx 等精选清单中,说明"发布 robots.txt"是 SEO 审计与上线检查流程的固定一站。
总结
发布 robots.txt 是一项 10 分钟即可完成的基础技术 SEO 工作,但它的破坏力与它的简单程度成正比:一个意外的Disallow: /足以让整站从搜索结果中消失。遵循本文的检查、修复、验证三步流程,以 Google 官方文档与 RFC 9309 为判定标准,再对照 Front-End Checklist 仓库中 apps/web/app/robots.ts 的源码级实现,你就能为自己的站点写出既合规又安全的爬虫访问规则。
【免费下载链接】Front-End-Checklist🗂 The essential checklist for modern web development, for humans and AI agents项目地址: https://gitcode.com/gh_mirrors/fr/Front-End-Checklist
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考