robots协议文件简介:
Robots协议(也称为爬虫协议、机器人协议等)的全称是“网络爬虫排除标准”(Robots Exclusion Protocol),网站通过Robots协议告诉搜索引擎哪些页面可以抓取,哪些页面不能抓取。
robots协议也叫robots.txt(统一小写)是一种存放于网站根目录下的ASCII编码的文本文件,它通常告诉网络搜索引擎的漫游器(又称网络蜘蛛),此网站中的哪些内容是不应被搜索引擎的漫游器获取的,哪些是可以被漫游器获取的。
举例理解:
如果将网站视为酒店里的一个房间,robots.txt就是主人在房间门口悬挂的“请勿打扰”或“欢迎打扫”的提示牌。这个文件告诉来访的搜索引擎哪些房间可以进入和参观,哪些房间因为存放贵重物品,或可能涉及住户及访客的隐私而不对搜索引擎开放。但robots.txt不是命令,也不是防火墙,类似于一个声明,具体就要看这个访问者遵不遵守这个声明。
注意:
- robots.txt必须放置在一个站点的根目录下,而且文件名必须全部小写。
- 因为一些系统中的URL是大小写敏感的,所以robots.txt的文件名应统一为小写。
- robots协议并不是一个规范,而只是约定俗成的,所以并不能保证网站的隐私。(通常主流的搜索引擎会遵守这个协议文件。)
robots文件怎样生效?
当一个搜索蜘蛛访问一个站点时,它会首先检查该站点根目录下是否存在robots.txt,如果存在,搜索机器人就会按照该文件中的内容来确定访问 的范围;如果该文件不存在,所有的搜索蜘蛛将能够访问网站上所有没有被口令保护的页面。
robots协议文件于SEO角度的使用:
屏蔽一些对蜘蛛爬行不友好、以及一些对搜索引擎和提升网站无太多意义;还要一些不希望被收录的页面。(例如网站后台页面,一个临时的活动页面等等,),可以避免浪费蜘蛛的抓取资源。所有通常我们的robots文件都是禁止抓取网站后台…
在robots协议文件中添加Sitemap: http://你的域名/sitemap.xml,可以帮助蜘蛛爬行网站地图。
百度官方建议:
仅当您的网站包含不希望被搜索引擎收录的内容时,才 需要使用robots.txt文件。
如果您希望搜索引擎收录网站上所有内容,请勿建立robots.txt文件。
Robots.txt常用指令解释:
User-Agent: 选择蜘蛛(选择哪些蜘蛛需要遵守撰写的规则)
蜘蛛和用户访问一样拥有 User-Agent ,通过http协议里的 User-Agent ,爬虫抓取时会声明自己的身份,robots.txt利用 User-Agent 来区分各个引擎的爬虫。
Sitemap: 写入网站的sitemap地址告诉蜘蛛。
例如:
Sitemap: https://www.linfengnet.com/wp-sitemap.xml
Allow: 允许被抓取的网页
例如:允许所有蜘蛛抓取整站
User-agent: *
Allow: /
Disallow: 不允许抓取的网页
例如:禁止所有蜘蛛抓取整站
User-agent: *
Disallow: /
Robots.txt常用符号:
“*”: 代表所有
举例使用: User-agent: * 这里的代表的所有的搜索引擎种类,是一个通配符
“$”:匹配行结束符。
举例使用: Disallow: /jpg$ 禁止抓取网页所有的.jpg格式的图片
“/”:代表根目录或者目录内所有文件
举例:Disallow: /xxx/ 带 / 和不带 / 斜杠是由区别的,通常在需要精准控制某个路径和路径下方的资源时候使用。
举例:使用精准的指令避免以外的错误
假设你现在有一个多语言的网站,正在操作一个德语版本的 /de/ 子目录。
因为还未完成,所以暂时你想阻止搜索引擎抓取这个目录内的内容。
下方的robots.txt文件可以屏蔽搜索引擎抓取这个目录以及下方的所有内容:
User-agent: *
Disallow: /de
但是,同时这也阻止了搜索引擎抓取所有以 /de
开头的内容。
比如:
/designer-dresses/
/delivery-information.html
/depeche-mode/t-shirts/
/definitely-not-for-public-viewing.pdf
这种情况,解决方法也很简单,只需要在后面加个斜杠:
User-agent: *
Disallow: /de/
有关规则冲突的说明
除非你非常的细心,否则部分情况disallow指令会与allow指令互相冲突。下方的这个例子,我们阻止了访问了这个页面 /blog/ 同时开放了这个页面 /blog
User-agent: *
Disallow: /blog/
Allow: /blog
这个例子中,这个URL /blog/post-title/ 似乎即被阻止了,又被允许了。那么到底是哪一个呢?
对与谷歌和必应来说,它们会遵循指令字符较长的那一个,在这个例子中就是disallow指令。
Disallow: /blog/ (6 字符)Allow: /blog (5 字符)
如果disallow指令和allow指令长度一样,那么限制范围较小的指令会胜出,这种情况就是allow指令。
小提示. 这里, /blog (没有斜杠为后缀) 是可以被抓取的。
严格来说,这只适用于谷歌和必应搜索引擎。其它搜索引擎会遵循第一条指令,这种情况就是disallow指令。
robots.txt文件写法:
User-agent: * 这里的代表的所有的搜索引擎种类,是一个通配符
Disallow: /admin/ 这里定义是禁止爬寻admin目录下面的目录
Disallow: /require/ 这里定义是禁止爬寻require目录下面的目录
Disallow: /ABC/ 这里定义是禁止爬寻ABC目录下面的目录
Disallow: /cgi-bin/*.htm 禁止访问/cgi-bin/目录下的所有以”.htm”为后缀的URL(包含子目录)。
Disallow: /? 禁止访问网站中所有的动态页面
Disallow: /jpg$ 禁止抓取网页所有的.jpg格式的图片
Disallow:/ab/adc.html 禁止爬去ab文件夹下面的adc.html文件。
Allow: /cgi-bin/ 这里定义是允许爬寻cgi-bin目录下面的目录
Allow: /tmp 这里定义是允许爬寻tmp的整个目录
Allow: .htm$ 仅允许访问以”.htm”为后缀的URL。
Allow: .gif$ 允许抓取网页和gif格式图片
每个指令都需要新起一行。否则会让搜索引擎产生误解
使用注释给开发者提供说明
使用注释功能,可以向开发者说明你的robots.txt指令的用途——很可能是未来的你自己。如果需要使用注释,只需要以(#)开头即可:# This instructs Bing not to crawl our site.User-agent: BingbotDisallow: /
蜘蛛会忽略所有以(#)开头的指令。
针对不同的子域名使用不同的robots.txt文件
Robots.txt只在当前所属的子域名中生效。如果你需要控制不同的子域名抓取规则,那么你就需要分开设置不同的robots.txt文件。
比如,你的主站运行在 domain.com 上,你的博客运行在 blog.domain.com 上。那么你就需要有两个robots.txt文件。一个是放在主站的根目录中,一个是放在博客站的根目录中。
robots.txt文件用法举例
例1. 禁止所有搜索引擎访问网站的任何部分
User-agent: *
Disallow: /
实例分析:淘宝网的 Robots.txt文件
User-agent: Baiduspider
Disallow: /
User-agent: baiduspider
Disallow: /
很显然淘宝不允许百度的机器人访问其网站下其所有的目录。
例2. 允许所有的robot访问
User-agent: *
Allow:
或者也可以建一个空文件 “/robots.txt”,亦或者直接不添加robots文件也是可以的。
例3. 禁止某个搜索引擎的访问
User-agent: BadBot
Disallow: /
例4. 允许某个搜索引擎的访问
User-agent: Baiduspider
Allow: /
例5.一个简单例子
在这个例子中,该网站有三个目录对搜索引擎的访问做了限制,即搜索引擎不会访问这三个目录。
需要注意的是对每一个目录必须分开声明,而不要写成 “Disallow: /cgi-bin/ /tmp/”。
User-agent:后的具有特殊的含义,代表“any robot”,所以在该文件中不能有“Disallow: /tmp/” or “Disallow:*.gif”这样的记录出现。
User-agent: *
Disallow: /cgi-bin/
Disallow: /tmp/
Disallow: /~joe/
关于谷歌Robot特殊参数:
允许 Googlebot:
如果您要拦截除 Googlebot 以外的所有漫游器不能访问您的网页,可以使用下列语法:
User-agent:
Disallow: /
User-agent: Googlebot
Disallow:
Googlebot 跟随指向它自己的行,而不是指向所有漫游器的行。
“Allow”扩展名:
Googlebot 可识别称为“Allow”的 robots.txt 标准扩展名。其他搜索引擎的漫游器可能无法识别此扩展名,因此请使用您感兴趣 的其他搜索引擎进行查找。“Allow”行的作用原理完全与“Disallow”行一样。只需列出您要允许的目录或页面即可。
您也可以同时使用“Disallow”和“Allow”。例如,要拦截子目录中某个页面之外的其他所有页面,可以使用下列条目:
User-agent: Googlebot
Disallow: /folder1/
Allow: /folder1/myfile.html
这些条目将拦截 folder1 目录内除 myfile.html 之外的所有页面。
如果您要拦截 Googlebot 并允许 Google 的另一个漫游器(如 Googlebot-Mobile),可使用”Allow”规则允许该漫游器的访问。例如:
User-agent: Googlebot
Disallow: /
User-agent: Googlebot-Mobile
Allow:
使用 * 号匹配字符序列:
您可使用星号 (*) 来匹配字符序列。例如,要拦截对所有以 private 开头的子目录的访问,可使用下列条目:
User-Agent: Googlebot
Disallow: /private*/
要拦截对所有包含问号 (?) 的网址的访问,可使用下列条目:
User-agent: *
Disallow: /?
使用 $ 匹配网址的结束字符
您可使用 $ 字符指定与网址的结束字符进行匹配。例如,要拦截以 .asp 结尾的网址,可使用下列条目:
User-agent: Googlebot
Disallow: /*.asp$
您可将此模式匹配与 Allow 指令配合使用。例如,如果 ? 表示一个会话 ID,您可排除所有包含该 ID 的网址,确 保 Googlebot 不会抓取重复的网页。但是,以 ? 结尾的网址可能是您要包含的网页版本。在此情况下,可对 robots.txt 文件进行如 下设置:
User-agent: *
Allow: /*?$
Disallow: /*?
一行将拦截包含 ? 的网址(具体而言,它将拦截所有以您的域名开头、后接任意字符串,然后是问号 (?),而后又是任意字符串的网址)。
Allow: /*?$ 一行将允许包含任何以 ? 结尾的网址(具体而言,它将允许包含所有以您的域名开头、后接任意字符串,然后是问号 (?),问号之后没有任何字符的网址)。
目前看来,绝大多数的搜索引擎机器人都遵守robots.txt的规则,而对于RobotsMETA标签,目前支持的并不多,但是正在逐渐增加,如著名 搜索引擎GOOGLE就完全支持,而且GOOGLE还增加了一个指令“archive”,可以限制GOOGLE是否保留网页快照。
常见搜索引擎蜘蛛名称
注意:robots.txt中的所有用户代理均严格区分大小写。因文章存在时效性,撰写robots文件的时候请到各搜索平台确认。
国内的搜索引擎蜘蛛:
- 百度蜘蛛:Baiduspider
- 搜狗蜘蛛:sogou spider
- 有道蜘蛛:YodaoBot和OutfoxBot
- 搜搜蜘蛛: Sosospider
国外的搜索引擎蜘蛛:
- Google: Googlebot
- Google Images: Googlebot-Image
- Bing蜘蛛(MSN): Bingbot
- Yahoo: Slurp
- DuckDuckGo: DuckDuckBot
- alexa蜘蛛:ia_archiver
相关的HTML标签: robots META标签
robots.txt协议文件通常是应用在对于整个网站而言的通用设置,通常可以和robots META标签一起使用。
robots META标签主要是针对一个独立的页面设置,与其他的META标签(如使用的语言、页面的描述、关键词等)一样,robots META标签也是放在页面的HEAD标签中,专门用来告诉搜索引擎robots如何抓取该页的内容。
详细的 robots META标签 标签介绍,请点击这里:Robots Meta标签
需要注意的是:
上述的robots.txt和Robots Meta标签都只是网站给搜索引擎机器人抓取站点内容的只是一种规则,都需要搜索引擎机器人的配合才行,并不是每个搜索引擎的蜘蛛都会遵守。
检查robots.txt是否设置成功
Robots.txt很容易出现错误,因此检测是十分有必要的。
设置完robots协议文件后,如何检查我们的robots.txt这个文件的有效性呢?
推荐一:使用Google管理员工具,登录后访问“工具 -> 分析 robots.txt”,检查文件有效性。
为了检测robots.txt相关问题,你只需要查看 Search Console(谷歌资源管理器)中的 “Coverage(覆盖率)”报告。
下面就是一些常见的错误,包括它们的含义以及解决方法:
是否需要检查与某个页面相关的错误?
将特定URL放入Search Console(谷歌资源管理器)的URL Inspection tool(网址检测)。如果被robots.txt屏蔽了,那么就会像下方这样显示:
推荐二:使用百度站长资源平台:登录,选择站点,选择->数据栏目中的robots点击,然后点击检测并更新。
如下图:
网站一定要设置robots文件吗?
拥有机器人.txt文件对很多网站来说并不重要,所以部分网站来说是可有可无的,尤其是小型网站。
虽然这么说,但是拥有它可以在搜索引擎访问网站的规则上给你一些额外的控制权。
例如:这可以帮助你:
- 防止抓取重复页面;
- 让网站在某个阶段不公开 (比如:在搭建网站雏形时);
- 防止抓取内部搜索页面;
- 防止服务器过载;
- 防止谷歌浪费crawl budget(抓取预算);
- 防止部分图片、视频及其它资源展示在谷歌结果中。
另外:搜索引擎机器人访问网站时,首先会寻找站点根目录有没有 robots.txt文件,如果有这个文件就根据文件的内容确定收录范围,如果没有就按默认访问以及收录所有页面。另外,当搜索蜘蛛发现不存在robots.txt文件时,会产生一个404错误日志在服务器上,从而增加服务器的负担,因此为站点添加一个robots.txt文件还是很重要的。
请注意,尽管谷歌(搜索引擎)通常不会索引robots.txt中阻止的网页,但这无法保证使用robots.txt文件可以100%将其排除在搜索结果之外。
谷歌说过,如果内容从另外一个地方获得链接,那么依然有可能被呈现在搜索结果当中。
内容参考
部分资料参考来源:
Robots.txt and SEO: Everything You Need to Know
Robots.txt: The Ultimate Guide for SEO (2021 Edition)
想了解更多关于robots协议的资料可以查看点击对应链接进行查看。