什么是Robots.txt文件?它有什么作用?
Robots.txt 是网站里的一个文件,它告诉搜索引擎抓取工具(蜘蛛)禁止或允许抓取网站的哪些内容。主流搜索引擎(包括 Google、Bing 和 Yahoo)都能够识别并尊重 Robots.txt的要求。
如需查看网站是否有Robots文件,请访问网址:域名/robots.txt,譬如https://loyseo.com/robots.txt,下图的示例,是一个WordPress网站安装完Rank math SEO插件自动生成的robots文件及其内容。
Robots.txt 是怎么运作的?
要想知道Robots.txt文件是如何发挥作用的,就要了解搜索引擎的工作机制:①爬行②抓取③索引(也可以叫做收录)。
- 爬行:搜索引擎的蜘蛛在爬网的过程中,通过从其他网站中获取到了你的网址,那么它就会记录下这个网址。还有,你也可以通过搜索引擎的站长工具,譬如在Google Search Console中提交你的网站地图(Sitemap),告知搜索引擎你的网站网址。
- 抓取:蜘蛛通过访问之前爬行获取的网址,抓取你网页里的内容并存档。爬行就像记录商店门牌号,抓取就是进店拍照。那是否你提交的网址一定都会被抓取呢?不一定,因为搜索引擎分配给你的抓取份额是有限的,如果你的站点很小,那基本不用担心,那如果你的站点规模庞大,那么,对于使用Robots.txt文件,禁止某些不必要的内容被抓取,就很用必要了,这能让抓取份额用在有意义的地方,而不是被无意义的内容消耗。
- 索引:也被称为收录,英文叫做index,也就是搜索引擎将之前抓取到的内容,呈现到用户搜索的相关搜索引擎结果中了。你可以通过在搜索引擎的搜索框中输入命令,site:你的网站或网址,以便查看你的网站有多少以及哪些网址被收录。也可以直接在站长工具中查看被索引的网页。是否被抓取的内容一定会被索引呢?并不是,搜索引擎有自己的规则来判定你的内容是否值得被索引,如果你的内容是重复的、抄袭的、无意义无价值的,那么很可能是被抓取了,但是没有索引。并且索引也是需要时间的,尤其对于新站,就像一个新人一样,还需要时间考验你,至于这个时间是多久,那就是搜索引擎说了算了,你需要做的是持续坚持的做正确且有用的事情:写内容体现专业度、做外部拓展增加信用度。
好了,了解到搜索引擎的工作机制后,我们开始说Robots文件的运作。
当搜索引擎的蜘蛛来到网站时,首先会阅读这个Robots.txt文件,了解到什么网址禁止被抓取后,搜索引擎便不去抓取这些页面。
但是,如果这些网址存在其他的导入链接(即外链时),譬如其他网址给了你一条外链指向这个内容,那么这个页面还是可能会被索引的,虽然,因为无法抓取而不能直接获取页面的内容,但是搜索引擎会根据外链提供的相关信息对这个内容进行索引并展示在搜索结果中。
所以,如果你想一个内容不被抓取,也不被索引,那么你还需要通过在内容中设置noindex元标记(meta robots)。
好了,了解了Robots.txt的工作原理后,我们开始制作一个robots.txt文件。
如何创建Robots.txt文件
如果你使用wordpress建站的,那么安装插件rank math seo或其他主流seo插件后,基本都能直接在插件中找到robots.txt文件的编辑功能,你只需要按下文所述,学习如何编辑指令规则即可。
以rank math seo插件为例,你可以按照下图所示,编辑robots.txt文件。
如果你不是用wordpress建站的,且建站系统本身不提供robots.txt编辑功能,你可以按照下文的教程自制。
第一步:本地创建Robots.txt文件
请用记事本或者其他文本型的软件(譬如Emeditor)创建一个名为robots.txt的文件,注意名字不能改,也不能大写,必须全小写。
第二步:编写指令规则
Robots.txt文件怎么写呢?
请用记事本继续编辑这个文件,输入指令规则,示例如下:
User-agent: * #搜索引擎抓取工具名称(即蜘蛛):任意,不限,谁都行 Disallow: / #禁止抓取:根目录下的所有内容 Allow:/post/ #允许抓取:/post/及其目录下的所有内容
上面这段是一组指令规则的构成,你可以参照写多段。
user-agent表示搜索引擎抓取工具的名字,disallow就表示禁止抓取,allow表示允许抓取,#号后的内容为注释,实际使用时可以去掉。注意,规则部分区分大小写,譬如/post/和/POST/不是相同的内容。
搜索引擎抓取工具的名字是多种多样的,谷歌、百度、必应都各自有自己的蜘蛛,并且每家搜索引擎的蜘蛛还不止一种,譬如谷歌有Googlebot、Googlebot-Image等等,如果你想了解谷歌蜘蛛种类,可以查看此文。
下表是常见的搜索引擎的蜘蛛名称。
搜索引擎 | 类型 | User-agent |
---|---|---|
Baidu | General | baiduspider |
Baidu | Images | baiduspider-image |
Baidu | Mobile | baiduspider-mobile |
Baidu | News | baiduspider-news |
Baidu | Video | baiduspider-video |
Bing | General | bingbot |
Bing | General | msnbot |
Bing | Images & Video | msnbot-media |
Bing | Ads | adidxbot |
General | Googlebot | |
Images | Googlebot-Image | |
Mobile | Googlebot-Mobile | |
News | Googlebot-News | |
Video | Googlebot-Video | |
AdSense | Mediapartners-Google | |
AdWords | AdsBot-Google | |
Yahoo! | General | slurp |
Yandex | General | yandex |
我们可以针对不同的蜘蛛写不同的规则,下面以示例进行详解。
下面的指令表示:针对谷歌和百度的蜘蛛,禁止抓取的内容=无,也就是什么都可以抓取。
User-agent: Googlebot User-agent: Baiduspider Disallow:
下面的指令是基于WordPress建站的网址结构的,解释已在备注中
User-agent: Googlebot Disallow:/wp-admin/ #禁止抓取wordpress网站后台的内容 Disallow:/my-account/ #禁止抓取会员中心目录下的内容 Disallow:*/feed/ #wordpress会自动生成feed,为了不消耗抓取份额,可以禁用,其中*表示/feed/之前可以是任意内容 Disallow:/?s= #在wordpress网站中,这是关键词搜索结果的网址结构,所以禁止抓取关键词搜索结果页,避免重复内容被抓取 Disallow:/*.gif$ #禁止抓取所有gif文件 User-agent: * Disallow:/ #除了谷歌,其他搜索引擎都不允许爬取网站 Sitemap: https://example.com/sitemap.xml #sitemap规则不是必须写的,但是建议写,以便蜘蛛抓取。 Sitemap: http://www.example.com/sitemap.xml
如果你想知道更多的robots.txt规则撰写方法,请点击此处。
第三步:上传文件至网站根目录
robots.txt文件应该放到哪里呢?
由于网站建站系统不同、服务器架构不同,上传文件的方法没有统一的,譬如可以借助主机的管理面板,又或是用FTP,在连通到网站所在的文件目录后,将robots.txt放在网站所在文件夹第一层中(也就是根目录)。
当成功上传后,通常在浏览器中访问域名/robots.txt就可以查看到文件。
第四步:测试 robots.txt 文件
测试robots.txt中所写的规则是否正确有效,需借助搜索引擎站长工具中提供的功能,以谷歌为例,我们用google search console的robots.txt测试工具(如下图)来进行测试,但这要求你先要将网站添加到google search console中。
当打开测试工具后,我们能看到谷歌获取了我们网站里的robots文件内容,如果你发现它不是最新版的,请把规则部分复制到输入框中,然后点击提交进行更新。接下来,在图的左下角,输入你需要测试的网址,点击右侧的测试按钮后,系统会反馈已拦截或已允许,当被拦截时,还会突出显示是哪条规则拦截了它。
如果网址是允许抓取的,那么会提示已允许。所以当发现想要被禁止爬取的网址被允许,那你就要检查一下规则是否撰写正确。
常见问题
Robots.txt文件是必须的吗?可以不要吗?
如果你的网站较小,且索引符合你的预期,你可以不要robots.txt文件,主流搜索引擎足够聪明的去识别你的内容。但建议还是要有一个Robots.txt文件,因为搜索引擎访问网站时,首先就是查阅它。
可以将资源类文件(css、js)禁止抓取吗?
不要这么做,因为搜索引擎需要靠资源类文件来解读你的网页。