博客robots.txt怎么写?别让百度蜘蛛迷路了

有个兄弟跑来问我,说他的博客都上线一个月了,百度一篇都没收录,是不是被"关小黑屋"了。

我让他把robots.txt发我看看。

打开一看我差点笑出来——他把Disallow设成了 / ,直接告诉所有搜索引擎"别来抓我"。这不是自己把门关上了吗...

robots.txt这东西看起来不起眼,但写错了真的会让你博客半年都收不录。今天专门聊聊这个。

robots.txt到底是干嘛的?

简单说,robots.txt就是放在你网站根目录的一个文本文件,告诉搜索引擎爬虫"哪些页面可以抓,哪些不能抓"。

它不是强制性的,属于一种"君子协定"。大部分搜索引擎会遵守,但个别不老实的爬虫可能会无视它。不过百度、Google这些正规搜索引擎都会遵守的。

文件位置:https://你的域名/robots.txt

你可以在浏览器里直接访问这个地址,看看你的博客有没有这个文件,以及内容写对了没有。

一个标准的robots.txt长什么样

先看一个正确的例子:

```

User-agent: *

Disallow: /zb_system/

Disallow: /zb_users/

Disallow: /admin/

Disallow: /?page=

Allow: /

Sitemap: https://www.wushuangbk.com/sitemap.xml

```

逐行解释一下:

  • User-agent: * —— 这是对所有搜索引擎爬虫说的。如果你想单独针对百度,就写 User-agent: Baiduspider
  • Disallow: /zb_system/ —— 不要抓Z-Blog的系统目录,后台文件不用让搜索引擎看到
  • Disallow: /zb_users/ —— 用户数据目录也屏蔽掉,包含登录信息
  • Disallow: /?page= —— 分页URL,避免重复内容被抓
  • Allow: / —— 除了上面列的,其他都允许抓取
  • Sitemap —— 告诉搜索引擎sitemap在哪里,方便它发现你的所有页面

常见的robots.txt写法错误

我见过太多博客把robots.txt搞炸了,列几个最常见的坑:

错误写法问题正确做法
Disallow: /全站禁止抓取Disallow: 具体目录
空白文件或不存在搜索引擎随便抓写一个规范文件
不加Sitemap蜘蛛找不到所有页面必须加上Sitemap地址
Allow和Disallow顺序反规则优先级混乱先写Disallow再写Allow

最致命的就是第一种,把Disallow写成 /,等于告诉百度"这个网站所有内容都不准抓"。我那个朋友就是犯了这种低级错误,改完之后三天就收录了首页。

不同程序的robots.txt模板

Z-Blog PHP:

```

User-agent: *

Disallow: /zb_system/

Disallow: /zb_users/

Disallow: /api/

Disallow: /?page=

Allow: /zb_users/upload/

Sitemap: https://你的域名/sitemap.xml

```

注意那个Allow /zb_users/upload/,因为你的文章图片可能存在upload目录里,这个要让蜘蛛抓到,不然百度搜图就搜不到你博客的图片了。

WordPress:

```

User-agent: *

Disallow: /wp-admin/

Disallow: /wp-includes/

Disallow: /wp-content/plugins/

Disallow: /trackback/

Disallow: /?s=

Disallow: /?p=

Allow: /wp-content/uploads/

Sitemap: https://你的域名/sitemap.xml

```

通用型(适合任何博客):

```

博客robots.txt怎么写?别让百度蜘蛛迷路了-第1张图片-无双博客

User-agent: *

Disallow: /admin/

Disallow: /login/

Disallow: /temp/

Disallow: /*?*

Allow: /

Sitemap: https://你的域名/sitemap.xml

```

这个 /*?* 的意思是屏蔽所有带参数的URL,可以避免大量重复页面被抓取。

robots.txt高级用法

禁止特定搜索引擎抓取:

```

User-agent: Baiduspider

Disallow: /private/

User-agent: Googlebot

Disallow:

```

这段的意思是:百度不能抓/private/目录,Google可以全站抓取。不过一般人用不到这个。

禁止抓取特定文件类型:

```

Disallow: /*.php$

Disallow: /*.json$

```

这行告诉爬虫不要抓后缀为.php和.json的文件。对于博客来说一般不需要,但某些特殊场景有用。

Crawl-delay指令:

```

Crawl-delay: 5

```

让爬虫每次抓取后等待5秒再抓下一个。对于小博客服务器来说可以减轻压力,但要注意百度不一定遵守这个指令,Google也不承认这个参数。

写完之后怎么验证?

第一步: 浏览器直接访问 https://你的域名/robots.txt,看能不能正常打开。

第二步: 用百度搜索"robots.txt检测工具",把你的网址输进去,看看百度蜘蛛能访问到哪些页面。

第三步: 用Google Search Console的"robots.txt测试工具"(虽然你的博客主要面向百度,但Google也做一下吧,反正又不亏)。

第四步: 过几天看百度站长平台的抓取诊断,看看robots.txt有没有被正确识别。

改完robots.txt之后一般不需要做什么额外操作,搜索引擎下次来抓取时会自动读取最新的robots.txt。如果你急着让它生效,可以在百度站长平台手动提交一下更新。

常见问题

Q1:robots.txt写错了会怎样?

轻的嘛就是某些页面不被收录,严重的就像我那朋友一样,全站不收录。但别太慌,改过来之后一般1-2周就能恢复。

Q2:robots.txt和meta robots标签有什么区别?

robots.txt控制的是爬虫能不能"看到"这个URL,meta robots(在网页head里写)控制的是搜索引擎能不能"收录和展示"这个页面。两者配合使用效果最好。

Q3:改完robots.txt多久生效?

百度的话一般1-3天就会重新读取。你可以在百度站长平台的抓取诊断里看到它最近一次读取robots.txt的时间。

Q4:要不要屏蔽CSS和JS文件?

不建议。百度官方明确说过,他们需要读取CSS和JS来正确理解页面内容。如果你屏蔽了,可能会影响页面的索引质量。

Q5:sitemap在robots.txt里必须写吗?

虽然百度站长平台可以单独提交sitemap,但在robots.txt里也声明一下是好的习惯,相当于双重保险。


推荐阅读


需要了解更多使用技巧?扫码加我微信,我来给你详细解答!

微信号:15207283116

标签:robots.txt,SEO优化,百度收录,博客搭建,搜索引擎