robots.txt 语法详解:*、$、?等字符的含义及用法

 5845

创建 robots.txt 文件很简单,您可以在任何文本编辑器中创建一个 robots.txt 文件,它是ASCII编码的文本文件,而不是HTML文件。本文将详细介绍 robots.txt 的语法及用法,以及各种注意问题。


5fd107d2a24fc.jpg

robots.txt 语法

User-Agent: 以下规则适用的机器人(例如“Baiduspider”等)

Disallow: 您希望阻止机器人访问的页面(根据需要,禁止多行)

Allow: 不需要阻止机器人访问的页面

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

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

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

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

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

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

对“msnbot”机器人整站关闭

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

User-agent: Baiduspider
Disallow:
User-agent: Googlebot
Disallow: /
# /tmp/ 目录或名为 /logs 的目录或文件阻止所有机器人
User-agent: *
Disallow: /tmp/
Disallow: /logs # 称为 logs 的目录或文件

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

User-Agent: *

主要机器人包括:Baiduspider(baidu),360spider(360搜索),Sogou web spider(搜狗),Googlebot(Google),Bytespider(字节跳动-头条搜索)等。各大搜索引擎机器人可自行搜索查看。

请注意,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.txt文件的功能。如上所述,主要搜索引擎已经采用了一些功能,而不一定是所有主要的引擎,可以更好地控制爬行。由于这些可能会受到限制,请务必谨慎使用。


抓取延迟:

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

User-agent: msnbot
Crawl-delay: 5


模式匹配

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

User-agent: Googlebot
Disallow: /private*/

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

User-agent: Baiduspider
Disallow: /*.asp$

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

User-agent: *
Disallow: /*?*

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

User-agent: *
Disallow: /*.zip$

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

User-agent: Slurp
Disallow: /*? # 阻止包含 ? 的URL
Allow: /*?$ # 允许所有以 ? 结尾的URL


允许指令:

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

要允许Baiduspider只进入“uploads”目录:

User-agent: Baiduspider
Disallow: /
Allow: /uploads/


Noindex指令:

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

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


网站地图:

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

Sitemap: https://www.zztuku.com/sitemap.xml

上面你的路径是Sitemap的完整网址。此指令与 User-agent 行无关,因此放在任何地方并不重要,不过一般是放在最后。所有主要的搜索引擎都支持Auto-Discovery Sitemap协议,包括Google,Baiduspider,360spider等。

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



TAG标签:
本文网址:https://www.zztuku.com/detail-8597.html
站长图库 - robots.txt 语法详解:*、$、?等字符的含义及用法
申明:如有侵犯,请 联系我们 删除。

评论(0)条

您还没有登录,请 登录 后发表评论!

提示:请勿发布广告垃圾评论,否则封号处理!!

    编辑推荐