前言介绍
在网站运营和SEO优化过程中,robots.txt文件扮演着“爬虫守门人”的关键角色。它是一份存放在网站根目录的纯文本文件,专门用来告诉搜索引擎的爬虫(如Googlebot、Bingbot、百度蜘蛛等)哪些页面可以抓取、哪些页面禁止抓取。正确编写robots.txt可以有效保护敏感数据(如后台管理页面、用户隐私页面),同时引导爬虫集中资源抓取重要内容,避免服务器带宽浪费。但编写不当也可能导致整站被屏蔽或重要页面无法收录。本教程将从零开始,手把手教你写出规范、严谨的robots.txt文件,并附带常见错误排查指南。
前置准备
1. 确认网站根目录访问权限:你需要能够通过FTP(如FileZilla)、服务器文件管理器(如cPanel、宝塔面板)或SSH登录服务器,在网站根目录(通常是public_html、www或htdocs文件夹)创建或编辑文件。
2. 准备文本编辑器:不要使用Word、WPS等富文本编辑器,推荐使用Notepad++、Sublime Text、VS Code或系统自带的记事本(Windows)/文本编辑(Mac),确保文件保存为UTF-8无BOM格式。
3. 了解网站结构:提前梳理出需要屏蔽的目录和文件(例如/admin、/private、/temp、/login.php),以及希望重点抓取的目录(如/articles、/product)。
4. 测试工具准备:准备一个在线robots.txt测试工具(如Google Search Console的robots.txt测试器、Bing Webmaster Tools的测试功能),用于验证文件语法和规则逻辑。
5. 备份原文件:如果网站已有robots.txt文件,先下载备份,防止修改后出现异常。
分步操作步骤
1. 创建或打开robots.txt文件
在网站根目录下,检查是否存在名为“robots.txt”的文件。如果不存在,使用文本编辑器新建一个空白文件,文件名必须为全小写robots.txt(注意大小写敏感,Robots.txt或ROBOTS.TXT不会被正确识别)。如果已存在,用文本编辑器打开它,准备编辑。文件内容必须使用纯文本格式,不要包含任何HTML标签、格式符号或乱码字符。
2. 编写User-agent指令指定爬虫
每条规则的开头必须声明该规则针对哪个爬虫。格式为:User-agent: [爬虫名称]。
- 如果要覆盖所有爬虫,使用通配符星号:User-agent: *
- 如果针对特定爬虫,使用官方名称,例如:User-agent: Googlebot(谷歌主爬虫)、User-agent: Baiduspider(百度爬虫)、User-agent: Bingbot(必应爬虫)。
- 注意:冒号后面必须跟一个空格,然后写爬虫名称。
- 示例:
User-agent: *
User-agent: Googlebot
User-agent: Baiduspider
每个User-agent独占一行,不同爬虫的规则需要分开写。
3. 编写Disallow指令禁止抓取路径
Disallow用于告诉爬虫哪些路径不能访问。格式:Disallow: [路径]
- 如果要禁止爬虫访问整个网站,使用:Disallow: /
- 如果只禁止某个目录,例如后台目录:Disallow: /admin/
- 如果只禁止某个具体文件:Disallow: /private/config.php
- 注意:路径区分大小写,必须与网站实际路径一致。例如网站后台是/Admin/,就不能写成/admin/。
- 如果某个爬虫没有禁止任何路径,可以写:Disallow: (后面留空,表示允许抓取所有内容)。但更规范的写法是直接省略Disallow行。
- 示例:禁止所有爬虫访问临时目录和登录页面:
User-agent: *
Disallow: /temp/
Disallow: /login.php
4. 编写Allow指令允许抓取特定路径
当使用Disallow禁止了某个大目录后,如果希望爬虫能够访问该目录下的某个子目录或文件,可以使用Allow指令覆盖。格式:Allow: [路径]
- 注意:Allow指令只在同一User-agent块内生效,且必须写在对应的Disallow之后。
- 示例:禁止所有爬虫访问/download/目录,但允许抓取/download/public/子目录:
User-agent: *
Disallow: /download/
Allow: /download/public/
- 如果某个爬虫没有设置Allow,默认所有未禁止的路径都是允许的。
5. 添加Sitemap指令(可选但强烈推荐)
告诉爬虫网站地图的位置,有助于爬虫更快发现和抓取新内容。格式:Sitemap: [完整URL]
- 注意:Sitemap指令可以放在文件任意位置,通常放在末尾。它不依赖User-agent块,对所有爬虫生效。
- 示例:
Sitemap: https://www.example.com/sitemap.xml
- 如果网站有多个sitemap(例如新闻sitemap、图片sitemap),可以写多行Sitemap指令,每行一个URL。
6. 组合完整规则并保存文件
将以上指令按逻辑组合,形成完整的robots.txt文件。注意以下几点:
- 每个User-agent块之间用空行隔开,增强可读性。
- 注释用井号(#)开头,可以写在行首或行尾,用于解释规则。例如:# 禁止所有爬虫访问后台。
- 不要写多余的空格或制表符,保持格式简洁。
- 保存文件时,编码选择UTF-8,换行符使用Unix/Linux格式(LF)或Windows格式(CR+LF)均可,但推荐使用LF以保证跨平台兼容性。
- 完整示例:
```
# robots.txt for example.com
User-agent: *
Disallow: /admin/
Disallow: /temp/
Disallow: /private/
Allow: /admin/public/
User-agent: Googlebot
Disallow: /test/
Sitemap: https://www.example.com/sitemap.xml
```
7. 上传文件到网站根目录
通过FTP或服务器文件管理器,将编辑好的robots.txt文件上传到网站根目录。确保文件名大小写正确,且文件权限设置为644(即所有者可读写,组和其他用户可读)。上传完成后,在浏览器中访问 https://你的域名/robots.txt,确认文件可以正常显示(显示为纯文本内容,而不是下载或404错误)。
8. 测试规则是否生效
使用搜索引擎提供的测试工具验证规则逻辑:
- Google Search Console:登录后选择你的网站,进入“设置”->“robots.txt测试器”,输入或粘贴你的robots.txt内容,然后输入一个URL(例如https://你的域名/admin/login.php),点击“测试”,查看结果是否显示“已屏蔽”或“允许”。
- Bing Webmaster Tools:类似功能在“配置”->“robots.txt”中。
- 也可以使用第三方在线工具(如merlinseo.com/robots-txt-test),但注意不要输入敏感URL。
- 如果测试发现规则不符合预期,返回步骤2-6修改并重新上传测试,直到所有关键路径的抓取权限正确。
常见问题
1. 为什么我写了Disallow: /admin/,但爬虫仍然能访问?
- 可能原因:路径大小写不匹配(例如实际路径是/Admin/,你写成了/admin/)。请检查网站实际目录名称,并保持大小写一致。另外,确认文件已正确上传到根目录,且没有其他同名文件覆盖。
2. 我禁止了所有爬虫,但网站首页还是被收录了?
- 如果使用Disallow: /,表示禁止爬虫抓取任何页面,但爬虫可能通过其他来源(如外部链接)发现首页并收录。robots.txt只能控制抓取,不能控制收录。要完全阻止收录,需在页面中添加noindex标签。
3. 多个User-agent块有冲突怎么办?
- 爬虫会优先匹配专有名称的User-agent块。例如,Googlebot会先看User-agent: Googlebot的规则,如果没有匹配再看User-agent: *的规则。所以专有规则优先级高于通配规则。
4. 我写了Allow规则,但爬虫仍然不抓取?
- Allow规则必须与对应的Disallow规则在同一User-agent块内,并且路径要精确匹配。例如:Disallow: /folder/ 后面写 Allow: /folder/sub/ 是有效的,但Allow: /folder/sub 缺少尾斜杠可能导致不匹配。建议路径末尾统一加斜杠(目录)或不加(文件)。
5. 文件上传后访问显示404或下载?
- 404表示文件不存在或路径错误,检查是否上传到根目录。如果浏览器提示下载,说明服务器未正确识别文本文件,检查文件扩展名是否为.txt,且内容没有BOM头。用文本编辑器重新保存为UTF-8无BOM格式。
6. Sitemap指令写错了会影响抓取吗?
- Sitemap指令写错(如URL错误或指向不存在文件)不会导致爬虫报错,但爬虫可能无法找到你的网站地图,影响新内容发现速度。确保Sitemap URL可访问且返回XML格式。
收尾总结
编写robots.txt文件的核心逻辑是:先声明针对哪个爬虫,再用Disallow和Allow组合定义黑白名单,最后附上Sitemap指引。记住,robots.txt是建议性协议,并非强制命令,合规的爬虫会遵守,但恶意爬虫可能无视。因此,敏感数据(如用户密码、支付信息)不能仅靠robots.txt保护,必须配合服务器权限验证(如.htaccess密码保护或IP白名单)。另外,每次修改robots.txt后,建议通过搜索引擎的测试工具验证,并观察网站日志中爬虫的访问行为是否改变。最后,保持文件简洁,避免冗余规则,定期检查更新(例如网站改版后及时调整路径),就能让robots.txt成为你SEO优化和网站安全的有力工具。