什么是 robots.txt
Robots.txt 是站长或者建站系统创建的一个文件,目的是用来告诉蜘蛛怎么抓取自己网站的页面,主要通过 “allow” 和 “disallow” 指令来告知“user agents(用户代理)”。如果网站上传了 robots.txt 文件,搜索引擎爬虫就会根据文件指示抓取网页。如果网站没有上传 robots.txt,那爬虫就能够抓取所有没有被口令保护的页面。
我们需要知道的是,robots.txt 只是一个指示文件,类似于贴在健身房、社区中心、服务中心等区域的标识语。其自身没有权利执行规则,但是有素质的顾客会遵守规则,而没有素质的顾客可能会违反规则。一般来说,常见的 Google、Bing、Yahoo、Baidu 等搜索引擎都会遵守 robot.txt 的指示,但是也存在一些不遵守规则的爬虫。
Robots.txt 文件工作原理
我在另一篇博客里有介绍过搜索引擎的工作原理,简单说就是这三步:
- 爬行:持续性的收集网页,建立数据库
- 索引:分析网页主题,根据主题建立索引
- 排名:去索引库匹配页面,排序后展示
在爬取互联网上的网页的时候,爬虫会先查看网站是否有 robots.txt 文件,如果有的话,它会先阅读文件上的规则,然后根据列出的规则去爬行网站。
如果你有不想被抓取的页面,比如会员页面,没有内容的分类页面,系统自动生成的无意义页面,你都可以在文件上指出让蜘蛛或者爬虫不要抓取这些页面。
但是就像我们上面说的,主流的搜索引擎会遵守这些规则,一些专门收集信息的蜘蛛不一定回遵守 robots.txt 规范。
还有一点要注意是,所有子域都需要有自己的robots.txt文件。例如,尽管 domain.com 拥有自己的 robots.txt 文件,但其所有子域(blog.domain.com,shop.domain.com 等)也需要上传各自的 robots.txt 文件。
Robots.txt 对 SEO 的作用
一份指令明确的 robots.txt 文件不仅可以帮助搜索引擎蜘蛛正确抓取你的网站,还能对你的 SEO 效果起到一定的作用。
优化抓取预算
我们在很多篇博客都提到了抓取预算这个术语,这里就不再做解释了。如果你的网站页面很多,已经超过了搜索引擎分配给你的网站的预算,那么在预算用完后,你很有可能还有一些重要页面没有被抓取,没被索引就更不可能有排名了。
这时候我们就可以使用 robots.txt 用来阻止一些没用的页面被搜索引擎爬取,省得白白浪费了抓取预算,将预算只用来抓取你想排名的页面,比如分类页,产品页,博客页,公司介绍页等。
屏蔽重复和私密页面
很多建站系统会自动生成一些重复页面,或者是运营人员手动创建了一些重复页面,这些页面对于用户来说都是没必要的,你只需要提供一个权威版本就好了,然后用 robots.txt 屏蔽其他页面。
还有类似于登录页面、会员页面、临时页面等,像这种页面一般来说我们也不希望浪费搜索引擎爬行预算,那么也可以使用 robots.txt 阻止搜索引擎去抓取这些页面。
Robots.txt 的指令和术语
Robots.txt 文件由一个或多个指令块组成,每个指令块都以user-agent 行开头。“user-agent” 是它所处理的特定爬行器的名称,然后另起一行表明对于该用户代理是 “allow” 还是 “disallow”。
User-agent
每个搜索引擎都有自己的用户代理用来表明自己的身份,其中还细分了不同的用途,有的是用来抓取图片的,有的是用来抓取视频的,还有的是用来抓取广告的。常见的用户代理有下面这些:
搜索引擎 | 抓取范围 | 用户代理 |
General | Googlebot | |
Images | Googlebot-Image | |
News | Googlebot-News | |
Video | Googlebot-Video | |
Ecommerce | Storebot-Google | |
AdSense | Mediapartners-Google | |
AdWords | AdsBot-Google | |
Bing | General | Bingbot |
Bing | Images & Video | Msnbot-Media |
Bing | Bing Ads | AdIdxBot |
Bing | Page Snapshots | BingPreview |
Baidu | General | Baiduspider |
Baidu | Images | Baiduspider-Image |
Baidu | Video | Baiduspider-Video |
Baidu | News | Baiduspider-News |
Baidu | Baidu Ads | Baiduspider-Ads |
Yahoo! | General | Slurp |
Yandex | General | Yandex |
Disallow
Disallow 命令是机器人排除协议中最常见的命令。它告诉机器人不要访问该命令之后的网页或一组网页。
如果你想阻止某个网页,可以这么写:
Disallow: /category/product/
如果你想阻止某个目录,可以这么写:
Disallow: /category/
如果你想隐藏整个网站,可以这么写:
Disallow: /
如果你想让爬虫访问所有页面,可以这么写:
Disallow:
Allow
“Allow”指令告诉机器人它们被允许访问特定的网页或目录。使用此命令可以允许机器人访问一个特定的网页,同时禁止文件中的其余网页。
如果你屏蔽特定文章以外的所有文章页面,可以这么写:
Disallow: /blog Allow: /blog/allowed-post
在这个例子中,搜索引擎可以访问 /blog/allowed-post,但是它不能访问同级目录下其他博客页面,比如 /blog/one-post,/blog/two-post。
Sitemap
Sitemap 指令用来告诉搜索引擎网站的站点地图所在的位置,站点地图一般列出了你想要被优先抓取和索引的页面,我在另一篇博客详细介绍了站点地图的原理以及作用,感兴趣的朋友可以看下。
如果你想指定站点地图的位置,可以这么写:
Sitemap: <https://www.domain.com/sitemap.xml
Crawl-delay
抓取延迟命令用于防止搜索引擎蜘蛛频繁请求抓取使服务器负担过重,可以指定机器人在每个请求之间等待的时间(以毫秒为单位)。一个等待 5 毫秒的抓取延迟命令的示例如下:
Crawl-delay: 5
需要注意的是,如果你的网站是大型网站的话,有上百万个页面,然后又设置了 Crawl-delay,可能会导致你的页面在一天内不能全部被抓取。如果你是小型网站,那么这个指令可以节省带宽。
常用的 robots.txt 规则
上面介绍了 robots.txt 的指令,大家应该已经有了初步了解了,现在我们来看下怎么将它们结合起来使用。User-agent 后面接的是搜索引擎,Disallow 和 Allow 用来表明屏蔽的网址或者文件类型。
Robots.txt 规则 | 规则说明 |
User-agent: * Disallow: / | 禁止所有搜索引擎抓取网站任何页面; 一般用于网站尚未建设完成时使用,屏蔽搜索引擎抓取。 |
User-agent: * Disallow: /category/ | 禁止所有搜索引擎抓取 category 这个目录; 比如,wordpress网站需要禁止抓取 wp-admin 这个管理登录的目录。 |
User-agent: * Disallow: /category | 禁止所有搜索引擎抓取以 category 开头的网址,比如 /category2023.html, /category/10.html。 |
User-agent: * Disallow: /category/ Allow: /category/page.html | 禁止所有搜索引擎抓取 category 这个目录,但可以抓取 category 目录下的 page.html。 |
User-agent: * Disallow: /page.html | 禁止所有搜索引擎抓取 page.html 这个页面。 |
User-agent: Googlebot Allow: / User-agent: * Disallow: / | 只允许谷歌蜘蛛爬取网站,其他搜索引擎禁止爬取。 |
User-agent: Googlebot Disallow: / User-agent: * Allow: / | 除了谷歌不可以爬取,其他搜索引擎均可爬取网站。 |
User-agent: * Disallow: /images/dog.jpg | 禁止所有搜索引擎抓取网站 images 目录下的 dog.jpg 图片。 |
User-agent: * Disallow: /*.gif$ | 禁止所有搜索引擎抓取网站所有 .gif 文件。 |
User-agent: * Disallow: /*.pdf$ | 禁止所有搜索引擎抓取网站所有 .pdf 文件。 |
User-agent: * Disallow: /*.xls$ | 禁止所有搜索引擎抓取网站所有 .xls 文件。 |
User-agent: * Disallow: /*? | 禁止搜索引擎抓取所有带参数的 URL。 |
上面就常见的一些规则做了举例说明,但是实际使用过程中需要根据网站的需求来编辑,只需要搞懂每个指令的意义,就能完全自定义自己的 robots.txt 文件。
如何查看 Robots.txt 文件
跟查看 sitemap 文件一样,你可以直接在域名后面输入 /robots.txt 来访问对应站点的 robots.txt 文件。如下图所示:
如何创建 Robots.txt 文件
市面上热门的建站系统都会自带 robots.txt 文件,如果没有的话,你可以通过文件文件或者使用工具来创建 robots.txt 文件。
创建 .txt 文件
如果你的建站系统没有自带 robots.txt 文件的话,那么创建一个也很简单。只需要在电脑上打开一个空的 .txt 文件,然后参考上面的规则编辑指令。需要注意以下两点:
- 每行一个指令,如果是两段规则,中间需要空一行
- 使用英文输入法,不要用中文输入法,: 后面需空一格
示例:
User-agent: Googlebot
Allow: /
User-agent: *
Disallow: /
使用 robots.txt 工具
网络上有很多可以生成 robots.txt 的工具,比如 Robots.txt File Generator,如果你是用 WordPress 建站的话,也可以使用 Yoast 插件。
使用工具的好处是可以避免语法错误,有时候自己写的话,可能会出现标点符号或者空格之类的小问题,使用软件生成就不会有这种烦恼,还省时省事。
如何提交 Robots.txt 文件
需要将 robots.txt 文件放在域名/子域名的根目录文件夹中,也就是对应网址的这个位置:domain.com/robots.txt,或者 blog.domain.com/robots.txt 。如果你会一点程序的话,可以去源码或者服务器添加 robots.txt 文件。
如果你是使用类似 WordPress 这种建站系统的话,那么一般会有插件可以用来编辑 robots.txt 文件,比如 Yoast。
如果你只做谷歌 SEO 的话,也可以去谷歌 Robots.txt Tester 工具上传文件。打开后界面是这样的,点击 submit 就好了。
总结
看完这篇博客相信你对 robots.txt 文件已经有了一个全面的理解,如果你运营的是一个大型网站的话,就可以根据上方的内容自定义合适的 robots.txt 文件了;如果你的网站页面不是很多,用的又是 WordPress,Shopify 这种主流建站系统的话,可以不用再编辑 robots.txt 文件,系统自带的文件已经屏蔽了一些不需要被抓取的页面。总之,了解网站的实际情况后再操作,这样才能避免潜在的一些风险。