欢迎您的光临,本博所发布之文章皆为作者亲测通过,如有错误,欢迎通过各种方式指正。由于本站位于香港虚拟主机,故速度比较慢。

文摘  robots.txt 语法、写法以及用法详解

性能优化 本站 232 0评论

robots是站点与spider沟通的重要渠道,站点通过robots文件声明该网站中不想被搜索引擎收录的部分或者指定搜索引擎只收录特定的部分。请注意,仅当您的网站包含不希望被搜索引擎收录的内容时,才需要使用robots.txt文件。如果您希望搜索引擎收录网站上所有内容,请勿建立robots.txt文件


robots文件往往放置于根目录下,包含一条或更多的记录,这些记录通过空行分开(以CR,CR/NL, or NL作为结束符),每一条记录的格式如下所示:":"


在该文件中可以使用#进行注解,具体使用方法和UNIX中的 惯例一样。该文件中的记录通常以一行或多行User-agent开始,后面加上若干Disallow和Allow行,详细情况如下:


robots.txt 语法


User-agent: 该项的值用于描述搜索引擎robot的名字。在"robots.txt"文件中,如果有多条User-agent记录说明有多个robot会受到"robots.txt"的限制,对该文件来说,至少要有一条User-agent记录。如果该项的值设为 *,则对任何robot均有效,在"robots.txt"文件中,"User-agent:*" 这样的记录只能有一条。如果在"robots.txt"文件中,加入"User-agent:SomeBot"和若干Disallow、Allow行,那么名为"SomeBot"只受到"User-agent:SomeBot"后面的 Disallow和Allow行的限制。      

Disallow: 该项的值用于描述不希望被访问的一组URL,这个值可以是一条完整的路径,也可以是路径的非空前缀,以Disallow项的值开头的URL不会被 robot访问。例如"Disallow:/help"禁止robot访问/help.html、/helpabc.html、/help/index.html,而"Disallow:/help/"则允许robot访问/help.html、/helpabc.html,不能访问/help/index.html。"Disallow:"说明允许robot访问该网站的所有url,在"/robots.txt"文件中,至少要有一条Disallow记录。如果"/robots.txt"不存在或者为空文件,则对于所有的搜索引擎robot,该网站都是开放的。       

Allow: 该项的值用于描述希望被访问的一组URL,与Disallow项相似,这个值可以是一条完整的路径,也可以是路径的前缀,以Allow项的值开头的URL 是允许robot访问的。例如"Allow:/hibaidu"允许robot访问/hibaidu.htm、/hibaiducom.html、/hibaidu/com.html。一个网站的所有URL默认是Allow的,所以Allow通常与Disallow搭配使用,实现允许访问一部分网页同时禁止访问其它所有URL的功能。       

Noindex: 您希望搜索引擎阻止和不要索引的页面(或者如果先前已建立索引,则将其解除索引)。支持Google,不支持雅虎和实时搜索(Live Search),其他搜索未知。

说明:

---每个 User-Agent / Disallow 组应该用空行分隔;  然而,组内不应存在空行(在User-agent行和最后一个Disallow之间)。

---井号(#)可用于 robots.txt 文件中的注释,其中该行上#后的所有内容都将被忽略。可能用于整行或末行。

---目录和文件名区分大小写:“my”,“My”和“MY”对于搜索引擎来说都是不同的。

---使用"*"and"$":Baiduspider支持使用通配符"*"和"$"来模糊匹配url。"*" 匹配0或多个任意字符, "$" 匹配行结束符


我们来看一个例子的robots.txt文件。下面的例子包括:

对“Googlebot”机器人没有任何不允许

对“msnbot”机器人整站关闭

所有机器人(Googlebot除外)不应访问 /tmp/ 目录或名为 /logs 的目录或文件,如注释所述,例如tmp.htm,/logs或logs.php

User-agent: Googlebot

Disallow:

User-agent: msnbot

Disallow: /

# /tmp/ 目录或名为 /logs 的目录或文件阻止所有机器人

User-agent: *

Disallow: /tmp/

Disallow: /logs # 称为 logs 的目录或文件

应该在User-Agent行上列出什么?User-agent 是特定搜索引擎机器人的名称。您可以设置一个条目以应用于特定的机器人(通过列出名称),或者您可以将其设置为适用于所有机器人(通过列出作为通配符的星号)。适用于所有机器人的条目如下所示:

User-Agent: *

主要机器人包括:Baiduspider(baidu),360spider(360搜索),Sosospider(腾讯搜索),Sogou web spider(搜狗),Googlebot(Google),Slurp(Yahoo!)等,各大搜索引擎机器人可参考百度蜘蛛最新UA及各大搜索引擎蜘蛛爬虫UA汇总

请注意,Googlebot的 User-agent 指定的一组指令将被Googlebot遵守; 但Googlebot不会遵守*(所有机器人)的 User-agent 的指令。


在Disallow行应该列出什么?列出您要阻止的页面。您可以列出特定的URL或模式。该条目应以正斜杠(/)开始。

例子:

阻止整个网站: Disallow: /

阻止一个目录及其中的一切: Disallow: /private_directory/

阻止页面: Disallow: /private_file.html

要阻止一个页面和(或)一个名为private的目录: Disallow: /private

如果您通过http和https提供内容,则需要为每个协议单独使用一个robots.txt文件。例如,为了允许机器人对所有http页面进行索引,但没有https页面,您可以按照http协议使用robots.txt文件:

User-agent: *

Disallow:

而对于https协议:

User-agent: *

Disallow: /

每当他们访问网站时,都会检查robots.txt文件。一旦将robots.txt文件的规则上传到站点的根目录并且机器人进入站点,则robots.txt文件中的规则将会生效。访问的频率根据流行度,权限以及内容更新频率的不同,机器人蜘蛛网的频率有所不同。有些网站每天可能会被抓取多次,而其他网站可能每周只能爬行几次。


最后需要说明的是:百度会严格遵守robots的相关协议,请注意区分您不想被抓取或收录的目录的大小写,百度会对robots中所写的文件和您不想被抓取和收录的目录做精确匹配,否则robots协议无法生效。


上面说了那么多理论,有没有简单对照表格告诉我,怎样的需求场景下应该怎样撰写robots文件?有的:

005zUK9Wgy6VBHzXBwx2d.png


除robots外其它禁止百度收录的方法


除robots外其它禁止百度收录的方法Meta robots标签是页面head部分标签的一种,也是一种用于禁止搜索引擎索引页面内容的指令。目前百度仅支持nofollow和noarchive


nofollow:禁止搜索引擎跟踪本页面上的链接

如果您不想搜索引擎追踪此网页上的链接,且不传递链接的权重,请将此元标记置入网页的<HEAD> 部分:<meta name="robots" content="nofollow">

如果您不想百度追踪某一条特定链接,百度还支持更精确的控制,请将此标记直接写在某条链接上:<a href="signin.php" rel="nofollow">signin</a>

要允许其他搜索引擎跟踪,但仅防止百度跟踪您网页的链接,请将此元标记置入网页的<HEAD> 部分:<meta name="Baiduspider" content="nofollow">


noarchive:禁止搜索引擎在搜索结果中显示网页快照

要防止所有搜索引擎显示您网站的快照,请将此元标记置入网页的<HEAD>部分:<meta name="robots" content="noarchive">

要允许其他搜索引擎显示快照,但仅防止百度显示,请使用以下标记:<meta name="Baiduspider" content="noarchive">

注:此标记只是禁止百度显示该网页的快照,百度会继续为网页建索引,并在搜索结果中显示网页摘要。


使用robots巧妙避免蜘蛛黑洞


对于百度搜索引擎来说,蜘蛛黑洞特指网站通过极低的成本制造出大量参数过多、内容类同但url不同的动态URL ,就像一个无限循环的“黑洞“,将spider困住。spider浪费了大量资源抓取的却是无效网页。


如很多网站都有筛选功能,通过筛选功能产生的网页经常会被搜索引擎大量抓取,而这其中很大一部分是检索价值低质的页面。如“500-1000之间价格的租房”,首先网站(包括现实中)上基本没有相关资源,其次站内用户和搜索引擎用户都没有这种检索习惯。这种网页被搜索引擎大量抓取,只能是占用网站宝贵的抓取配额,那么该如何避免这种情况呢?


我们以北京美团网为例,看看美团网是如何利用robots巧妙避免这种蜘蛛黑洞的:

对于普通的筛选结果页,使用了静态链接,如:

http://bj.meituan.com/category/zizhucan/weigongcun

同样是条件筛选结果页,当用户选择不同排序条件后,会生成带有不同参数的动态链接,而且即使是同一种排序条件(如:都是按销量降序排列),生成的参数也都是不同的。如:

http://bj.meituan.com/category/zizhucan/weigongcun/hot?mtt=1.index/poi.0.0.i1afqhek

http://bj.meituan.com/category/zizhucan/weigongcun/hot?mtt=1.index/poi.0.0.i1afqi5c


对于美团网来说,只让搜索引擎抓取筛选结果页就可以了,而各种带参数的结果排序页面则通过robots

规则拒绝提供给搜索引擎。在robots.txt的文件用法中有这样一条规则:Disallow: /*?* ,即禁止搜索引擎访问网站中所有的动态页面。美团网恰是通过这种方式,对spider优先展示高质量页面、屏蔽了低质量页面,为spider提供了更友好的网站结构,避免了黑洞的形成。


一些先进的技术


主要的搜索引擎已经开始合作来推进robots.txt文件的功能。如上所述,主要搜索引擎已经采用了一些功能,而不一定是所有主要的引擎,可以更好地控制爬行。由于这些可能会受到限制,请务必谨慎使用。


抓取延迟

某些网站可能会遇到大量流量,并希望将搜索引擎蜘蛛减慢,以允许更多的服务器资源来满足常规流量的需求。抓取延迟是Yahoo,Live Search和Ask所认可的特殊指令,指示抓取工具在抓取页面之间等待的秒数:

User-agent: msnbot

Crawl-delay: 5


模式匹配

模式匹配现在似乎可用于:Google,Yahoo和Live Search。模式匹配的价值相当可观。让我们先看一下最基本的模式匹配,使用星号通配符。阻止访问以“private”开头的所有子目录:

User-agent: Googlebot

Disallow: /private*/

您可以使用美元符号($)匹配字符串的末尾。例如,阻止以.asp结尾的URL:

User-agent: Googlebot

Disallow: /*.asp$

与在Perl和其他地方的正则表达式中发现的更先进的模式匹配不同,问号没有特殊的权力。所以,阻止对包含问号(?)的所有URL的访问,只需使用问号(不需要“转义”或者使用反斜杠):

User-agent: *

Disallow: /*?*

阻止机器人抓取特定文件类型的所有文件(例如.gif):

User-agent: *

Disallow: /*.gif$

这是一个比较复杂的例子。假设您的站点仅使用查询字符串部分的URL(“?”),仅用于会话ID,并且您要排除包含动态参数的所有URL,以确保机器人不会抓取重复的页面。但是您可能希望包含以“?”结尾的任何URL。以下是如何实现的:

User-agent: Slurp

Disallow: /*? # 阻止包含 a 的URL

Allow: /*?$ # 允许所有以 a 结尾的URL


允许指令

就像听起来一样,它与Disallow指令相反,它提供了专门调用可能被抓取的目录或页面的能力。这在大部分或整个场地被禁止之后可能是有益的。

要允许Googlebot只进入“google”目录:

User-agent: Googlebot

Disallow: /

Allow: /google/


Noindex指令

该指令提供了从搜索结果中消除无代号无标题列表的优点,但仅限于Google。它的语法恰好反映了Disallow。用Matt Cutts的话说:

Google允许在robots.txt中使用NOINDEX指令,它将完全从Google删除所有匹配的站点URL。(这种行为可能会根据这个政策讨论而改变,当然这也是为什么我们还没有谈论过这个问题。)


网站地图

XML网站地图文件可以告诉搜索引擎您网站上的所有页面,并且可选地提供有关这些页面的信息,例如哪些是最重要的以及更改频率。它充当一个自动发现机制,让蜘蛛找到XML站点地图文件。您可以通过在robots.txt文件中添加以下行来告诉Google和其他搜索引擎您的Sitemap:


Sitemap: sitemap_location

sitemap_location是Sitemap的完整网址。此指令与 User-agent 行无关,因此放在任何地方并不重要,不过一般是放在最后。所有主要的搜索引擎都支持Auto-Discovery Sitemap协议,包括Google,Yahoo,Live Search和Ask。

虽然 Auto-Discovery 提供了一种通知搜索引擎关于sitemap.xml文件的方法,但也值得通过其每个网站管理员控制台(Google网站管理员中心,雅虎网站浏览器,实时搜索网站管理员中心)直接验证和提交站点地图到搜索引擎 。


转载请注明: ITTXX.CN--分享互联网 » robots.txt 语法、写法以及用法详解

最后更新:2018-10-22 12:56:40

赞 (0) or 分享 ()
游客 发表我的评论   换个身份
取消评论

表情
(0)个小伙伴在吐槽