
robots.txt 生成器:2分钟为您的网站创建正确的文件
📷 Prateek Katyal / Pexelsrobots.txt 生成器:2分钟为您的网站创建正确的文件
robots.txt的实用指南:它的作用、开发者常犯的错误,以及如何为您的网站生成正确的文件。
robots.txt是那种创建一次之后就被遗忘的文件之一。对于小型内容网站,这通常没问题。但对于有管理员面板、暴露的暂存路径、内部搜索结果页面或重复内容的网站,配置错误(或缺失)的robots.txt可能悄悄地造成数月的SEO问题。
本指南介绍robots.txt的实际作用、它不做什么(常见混淆的来源),以及如何为常见网站类型编写正确的文件。您可以使用robots.txt生成器无需记忆语法即可构建您的文件。
robots.txt实际上做什么
robots.txt是放置在域名根目录的纯文本文件,告诉网络爬虫应该和不应该爬取哪些URL。关键词是"爬取",而不是"索引"。
文件位于https://yourdomain.com/robots.txt。当Googlebot、Bingbot或其他爬虫访问您的网站时,它们首先获取这个文件。根据找到的内容,决定要跟踪哪些URL。
最简单的robots.txt如下:
User-agent: *
Allow: /
这告诉所有爬虫可以爬取所有内容。功能上与没有robots.txt相同。
限制性的可能如下:
User-agent: *
Disallow: /admin/
Disallow: /internal/
Disallow: /api/
每个指令都是应用于一个或多个User-agent组的Disallow或Allow行。
爬取与索引的区别(这很重要)
很多开发者认为在robots.txt中屏蔽URL会将其从Google搜索结果中删除。并不会,这确实会造成真实问题。
屏蔽URL时实际发生的情况:
- Googlebot停止爬取该URL,不会跟踪该页面的链接,不会读取其内容
- 但如果其他已索引的页面链接到被屏蔽的URL,Google仍然可以发现该URL的存在
- Google可能仍会在搜索结果中显示该URL,并附带类似"此页面没有可用信息"的通用描述
因此,如果您希望某页面完全从搜索结果中排除,单独使用Disallow是不够的。您需要noindex指令,但问题在于:如果页面被阻止爬取,Googlebot无法读取noindex标签来执行它。
这造成了令人沮丧的局面:要使用noindex,您必须允许页面被爬取。
基本原则:
- 使用robots.txt
Disallow防止爬虫在对SEO不重要的页面(暂存路径、内部API、重复过滤页面)上浪费爬取预算 - 使用
noindex元标签防止特定页面出现在搜索结果中 - 对于真正敏感的页面(管理员面板、私有内容),使用实际的身份验证,而不是robots.txt
User-Agent:针对特定爬虫
User-agent字段允许您针对所有爬虫或特定爬虫。
User-agent: *
星号表示"所有未另行指定的爬虫"。大多数robots.txt文件将此用于一般规则。
您也可以针对指定的爬虫:
User-agent: Googlebot
Disallow: /no-google/
User-agent: Bingbot
Disallow: /no-bing/
User-agent: *
Disallow: /admin/
规则按user-agent组应用。Googlebot遵循Googlebot块。如果没有匹配的块,它会回退到*块。
您可能特别想管理的一些爬虫:
Googlebot— Google的主要网络爬虫Googlebot-Image— Google专用图片爬虫Bingbot— Microsoft BingGPTBot— OpenAI的训练爬虫(内容网站的新兴关注点)anthropic-ai— Anthropic的训练爬虫AhrefsBot、SemrushBot、MJ12bot— SEO和分析工具
如果您想特别屏蔽AI训练爬虫:
User-agent: GPTBot
Disallow: /
User-agent: anthropic-ai
Disallow: /
User-agent: *
Allow: /
这越来越常见。是否对您的网站真的重要是另一个问题,但语法是正确的。
常见的Disallow模式
以下是适用于常见情况的正确模式:
屏蔽整个目录
User-agent: *
Disallow: /admin/
末尾的斜杠很重要。/admin/屏蔽/admin/settings、/admin/users等。没有斜杠,/admin也会屏蔽字面意义上名为/administrator或/admin-login的页面,这可能不是您想要的。
屏蔽特定文件
User-agent: *
Disallow: /private-page.html
屏蔽URL查询参数(过滤页面)
电商网站通常可以通过许多过滤组合访问相同的产品:/products?color=red&size=L&sort=price。这会产生重复内容。屏蔽它们:
User-agent: *
Disallow: /*?
这会屏蔽任何带有查询字符串的URL。请小心,如果您的重要页面使用查询字符串(某些单页应用会这样),这也会屏蔽它们。更有针对性的方法:
User-agent: *
Disallow: /products/*?
这只屏蔽/products/下的查询字符串URL。
在被屏蔽的目录中允许特定路径
有时您想屏蔽目录的大部分但允许一个路径:
User-agent: *
Disallow: /account/
Allow: /account/signup
user-agent块内的顺序很重要。大多数爬虫会应用最具体的匹配规则。
Sitemap指令
您可以(也应该)在robots.txt中包含您的站点地图URL:
User-agent: *
Disallow: /admin/
Sitemap: https://yourdomain.com/sitemap.xml
Sitemap指令放在末尾,任何user-agent块之外。这不仅仅是礼貌,Google会积极使用它来发现和优先爬取您的重要页面。
如果您有多个站点地图(对于有图像或视频站点地图的大型网站很常见):
Sitemap: https://yourdomain.com/sitemap.xml
Sitemap: https://yourdomain.com/sitemap-images.xml
您还应该直接在Google Search Console中提交站点地图,但在robots.txt中包含它可确保任何读取该文件的爬虫自动发现它。
Crawl-Delay:谨慎使用
一些爬虫支持Crawl-delay指令:
User-agent: *
Crawl-delay: 10
这告诉爬虫在请求之间等待10秒。最初用于防止爬虫对小型服务器造成压力。
问题是:Googlebot忽略它。 Google明确表示他们不支持Crawl-delay。如果您需要减少Googlebot的爬取速率,请在Google Search Console的爬取速率设置中进行。
Bingbot等其他爬虫支持Crawl-delay,所以它并非完全无用,但对于Google来说,它没有任何效果。不要依赖它进行速率限制。
损害SEO的常见错误
屏蔽CSS和JavaScript文件
这曾经是常见建议。"屏蔽爬虫访问脚本和样式表以节省带宽。"这是不好的做法。Google需要渲染您的页面来正确评估它们,而渲染需要CSS和JavaScript。如果您屏蔽这些:
# 不要这样做
User-agent: *
Disallow: /wp-content/
Disallow: /assets/
Disallow: /*.css$
Disallow: /*.js$
Google无法看到您的页面实际外观,这可能影响排名。允许爬虫访问您的静态资源。
忘记暂存和开发环境
如果您的暂存环境可以通过staging.yourdomain.com或yourdomain.com/staging/访问,请确保:
- 在身份验证后面(推荐)
- 在robots.txt中被屏蔽
Google索引的暂存内容会造成重复内容问题。这是快速迭代网站的常见疏忽。
使用robots.txt保护敏感内容
这值得重申。robots.txt不是访问控制。该文件是公开可读的。任何人都可以访问yourdomain.com/robots.txt,准确查看您试图隐藏的路径。如果这些路径引人注目,人们会直接访问它们。对于真正敏感的内容,请使用服务器端身份验证。
意外屏蔽站点地图
# 这意外地屏蔽了站点地图
User-agent: *
Disallow: /
Allow: /public/
Sitemap: https://yourdomain.com/sitemap.xml
在这个例子中,/sitemap.xml被Disallow: /屏蔽,因为它与Allow: /public/例外不匹配。文件中的sitemap指令不会自动解除对站点地图URL的屏蔽。您需要明确添加Allow: /sitemap.xml。
位置错误
robots.txt必须位于域名根目录。yourdomain.com/robots.txt有效。yourdomain.com/blog/robots.txt什么都不做,爬虫不会在那里查找。
另外,yourdomain.com的robots.txt不影响subdomain.yourdomain.com。如果您想在那里控制爬取,每个子域名都需要自己的robots.txt。
常见网站类型的robots.txt示例
标准内容或营销网站
User-agent: *
Allow: /
Sitemap: https://yourdomain.com/sitemap.xml
如果没有什么需要隐藏的,也没有重复内容问题,保持简单。
WordPress网站
User-agent: *
Disallow: /wp-admin/
Allow: /wp-admin/admin-ajax.php
Sitemap: https://yourdomain.com/sitemap.xml
Allow: /wp-admin/admin-ajax.php很重要。一些主题和插件使用这个端点来实现Googlebot需要访问以进行正确渲染的前端功能。
有过滤页面的电商网站
User-agent: *
Disallow: /cart/
Disallow: /checkout/
Disallow: /account/
Disallow: /search?
Disallow: /products/*?sort=
Disallow: /products/*?page=
Sitemap: https://yourdomain.com/sitemap.xml
购物车和结账页面不应被索引。账户页面是用户特定内容。过滤/排序URL组合会产生重复内容。
有API路由的Next.js或单页应用
User-agent: *
Disallow: /api/
Disallow: /_next/
Allow: /_next/static/
Allow: /_next/image
Sitemap: https://yourdomain.com/sitemap.xml
屏蔽API路由。屏蔽Next.js内部路径,但渲染器需要的静态资源和图像优化端点除外。
测试您的robots.txt
不要假设您的文件是正确的,请验证它。
Google Search Console有robots.txt测试器(设置 > robots.txt)。您输入URL路径,它告诉您当前robots.txt是否允许或屏蔽Googlebot,以及Google上次获取该文件的内容。
Search Console中的URL检查工具可让您检查单个URL,并查看Google是否可以访问和渲染它们。
各种SEO套件的robots.txt检查器等第三方工具可以验证语法并测试多个user-agent。在处理网站整体SEO设置时,SEO元数据生成器和OG图像生成器是有用的辅助工具。
对robots.txt进行更改后,您可以使用URL检查工具请求Google重新获取它,尽管更改通常会在几天内传播。
生成您的robots.txt
手动编写robots.txt并不复杂,但很容易在语法上出现小错误:缺少斜杠、指令位置错误、user-agent块覆盖范围不符合预期。
robots.txt生成器让您选择要配置的爬虫、要屏蔽的路径,添加站点地图URL,并获得干净、有效的输出。它比查找语法更快,减少了因拼写错误而损失重要页面爬取覆盖的机会。
生成后,将文件放在Web服务器的根目录,并验证它可以通过yourdomain.com/robots.txt访问。对于大多数框架:
- Next.js:添加
public/robots.txt或在App Router中使用robots.ts路由 - Gatsby:放在
static/robots.txt - Hugo:放在
static/robots.txt - 普通HTML网站:放在Web服务器提供服务的根目录
对于Next.js App Router用户,您也可以以编程方式生成它:
// app/robots.ts
import { MetadataRoute } from 'next'
export default function robots(): MetadataRoute.Robots {
return {
rules: {
userAgent: '*',
allow: '/',
disallow: ['/admin/', '/api/'],
},
sitemap: 'https://yourdomain.com/sitemap.xml',
}
}
对于规则可能依赖于环境变量的网站(例如,在暂存环境中屏蔽所有爬虫),这种方法更可取。
robots.txt很简单,但围绕它的误解,特别是爬取与索引的区别,会造成真实的、有时难以调试的SEO问题。一次性正确设置文件,在Search Console中测试,然后您就可以真正忘记它了。