robots.txt是任何搜索引擎优化的重要组成部分,也是SEOer的重要一课。
但是,有时候robots.txt文件会被网站优化师SEOer忽视。
无论你是否刚刚起步,或者你是一个优化老手,都需要知道robots.txt文件应该怎样写。
那么,我们先来了解:
robots.txt文件可以用于各种各样的事情。
例如从让搜索引擎知道去哪里找到你的网站站点地图、告诉他们哪些页面不需要抓取,以管理网站爬行预算。
搜索引擎会定期检查网站的robots.txt文件,看看是否有任何抓取网站的说明。我们称这些特别的说明为“指令”。
如果没有robots.txt文件或者没有适用的指令,搜索引擎将抓取整个网站。
Okay,那什么是爬行预算(Crawl Budget)?
简单解释下:
谷歌和其他搜索引擎一样,他们只有有限的资源可用于抓取和索引你网站的内容。
如果你的网站只有几百个网址,那么Google应该可以轻松抓取到所有网页并将其编入索引。
但是,如果网站很大,例如电子商务网站,有数千个包含大量自动生成的网页(如搜索页),那么Google可能无法抓取所有这些网页,你将失去许多潜在的流量和可见性。
所以我们要通过设置robots.txt文件用于管理网站爬行预算。
谷歌表示:
那些低价值的网址就比如像搜索页一类的页面。生成太多这些页面,谷歌蜘蛛如果去爬行的话,将消耗大量爬行预算,以至于一些重要的页面可能就不能被收录了。
使用robots.txt文件来帮助管理网站抓取预算,确保搜索引擎尽可能高效地(尤其是大型网站)抓取重要网页而不是浪费时间去抓取登录,注册或支付页面等页面。
从搜索引擎优化SEO的角度来看,robots.txt文件起着至关重要的作用。它告诉搜索引擎他们如何最好地抓取你的网站。
使用robots.txt文件可以阻止搜索引擎访问网站的某些部分,防止重复内容,并为搜索引擎提供有关如何更有效地抓取你网站的有用提示。
在对robots.txt进行更改时要小心:因为设置失误可能会使搜索引擎无法访问网站的大部分内容。
在Googlebot,Bingbot等机器人抓取网页之前,它会首先检查是否存在robots.txt文件,如果存在,则通常会遵循该文件中找到的路线。
你可以通过robots.txt文件控制以下事情:
-
阻止访问网站的某个部分(开发和登台环境等)
-
保持网站内部搜索结果页面不被抓取,编入索引或显示在搜索结果中
-
指定站点地图或站点地图的位置
-
通过阻止访问低价值页面来优化抓取预算(登录,支付页面,购物车等)
-
防止将网站上的某些文件(图像,PDF等)编入索引
让我们看一个例子来说明这一点:
你有一个电子商务网站,访问者可以使用筛选功能快速搜索你的产品,如通过销量、价格排列。
此筛选生成的页面基本上显示与其他页面相同的内容。
这对用户很有用,但会混淆搜索引擎,因为它会创建重复的内容。
如果搜索引擎把这些网页编入索引,将浪费你宝贵的抓取资源。
因此,应该设置规则,以便搜索引擎不访问这些页面。
如果你不熟悉robots.txt文件,或者不确定你的网站是否有该文件,可以快速查看。
方法:
将 /robots.txt 添加到首页URL的末尾。
示例:www.yoursite.com/robots.txt
如果没有显示任何内容,那么说明你的站点没有robots.txt文件。那就应该设置一个了。
创建robots.txt文件是一个相当简单的过程:
新建文本文档 ——>重命名为robots.txt(所有文件必须小写)——> 编写规则 ——>用FTP把文件上(放到根目录下)传到空间
下面的文章是谷歌官方介绍,将向你robots.txt文件的创建过程,可以帮助你轻松建立你自己的robots.txt文件:
https://support.google.com/webmasters/answer/6062596?hl=zh-Hans
注意:
robots.txt自身是一个文本文件。它必须位于域名的根目录中并 被命名为"robots.txt"。位于子目录中的 robots.txt 文件无效,因为爬虫只在域名的根目录中查找此文件。
例如,http://www.example.com/robots.txt 是有效位置,http://www.example.com/mysite/robots.txt 则不是。
如果你用WordPress建站,可以用virtual robots、yoast、all in one seo等插件创建和设置。
以下是可以在自己的网站上使用robots.txt文件的几个示例。
允许所有爬虫 /蜘蛛访问所有网站内容:
User-agent:*
Disallow:
禁止所有爬虫 /蜘蛛访问所有网站内容:
User-agent:*
Disallow:/
这里可以了解到在创建站点robots.txt时出错是多么容易,因为阻止整个站点被看到的区别在于:disallow指令(Disallow:/)中的简单斜杠。
阻止谷歌爬虫 /蜘蛛访问:
User-agent:Googlebot
Disallow:/
阻止爬虫 /蜘蛛访问特定页面:
User-agent:
Disallow:/thankyou.html
从服务器的一部分中排除所有爬虫:
User-agent:*
Disallow:/ cgi-bin /
Disallow:/ tmp /
Disallow:/junk/
这是theverge.com网站上robots.txt文件的示例:
一、说明theverge不想谷歌爬虫去抓取这些目录下的内容
二、说明theverge不想任何爬虫去抓取这些目录下的内容
三、theverge把所有的站点地图列在robots.txt里面
可以在此处查看示例文件:www.theverge.com/robots.txt
可以看到The Verge如何使用他们的robots.txt文件,专门支出Google的新闻蜘蛛“Googlebot-News”(第一点),以确保它不会抓取网站上的这些目录。
重要的是要记住,如果想确保爬虫不会抓取你网站上的某些页面或目录,那么可以在robots.txt文件的“Disallow”声明中调出这些页面和/或目录,如上面例示的做法。
另外,还可以在robots.txt规范指南中查看Google如何处理robots.txt文件,Google对robots.txt文件的当前最大文件大小限制。
Google的最大大小设置为500KB,因此请务必注意您的网站robots.txt文件的大小。
以下内容提取于谷歌官方介绍,原文:
https://support.google.com/webmasters/answer/6062596?hl=zh-Hans
位置规则和文件名
robots.txt文件应始终放在root
网站的位置(在主机的顶级目录中)并带有文件名robots.txt
,例如:https://www.example.com/robots.txt
。
请注意,robots.txt文件的URL与其他任何URL一样,区分大小写。
如果在默认位置找不到robots.txt文件,搜索引擎会认为没有指令。
-
文件必须命名为 robots.txt。
-
网站只能有 1 个 robots.txt 文件。
-
robots.txt 文件必须位于它所应用到的网站主机的根目录下。例如,要控制对
http://www.example.com/
下所有网址的抓取,就必须将 robots.txt 文件放在根目录下(即http://www.example.com/robots.txt
),而不能放在子目录下(例如http://example.com/pages/robots.txt
)。 -
robots.txt 文件可应用到子网域(例如
http://website.example.com/robots.txt
)或非标准端口(例如http://example.com:8181/robots.txt
)。
语法
-
robots.txt 必须是 ASCII 或 UTF-8 文本文件。不允许包含其他字符。
-
robots.txt 文件由一条或多条规则组成。
-
每条规则由多条指令(说明)组成,每条指令各占一行。
-
每条规则包含以下信息:
-
此规则的适用对象(即User-agent)
-
代理可以访问的目录或文件,和/或
-
代理无法访问的目录或文件。
-
系统会按照从上到下的顺序处理这些规则,而且一个用户代理只能匹配 1 个规则集(即与相应用户代理匹配的首条最具体的规则)。
-
系统的默认假设是:用户代理可以抓取所有未被
Disallow:
规则禁止访问的网页或目录。 -
规则区分大小写。例如,
Disallow: /file.asp
适用于http://www.example.com/file.asp
,但不适用于http://www.example.com/FILE.asp
。
规则 | 示例 |
禁止抓取整个网站。 请注意,在某些情况下,Google 即使未抓取网站的网址,仍可能会将其编入索引。注意:这不适用于各种 AdsBot 抓取工具,此类抓取工具必须明确指定。 |
User-agent: * Disallow: / |
禁止抓取某一目录及其内容(在目录名后面添加一道正斜线)。请注意,若想禁止访问私密内容,则不应使用 robots.txt,而应改用适当的身份验证机制。对于 robots.txt 文件所禁止抓取的网址,Google 仍可能会在不进行抓取的情况下将其编入索引;另外,由于 robots.txt 文件可供任何人随意查看,因此可能会泄露您的私密内容的位置。 |
User-agent: * Disallow: /calendar/ Disallow: /junk/ |
仅允许使用某一抓取工具 |
User-agent: Googlebot-news Allow: / User-agent: * Disallow: / |
允许使用除某一抓取工具以外的其他所有抓取工具 |
User-agent: Unnecessarybot Disallow: / User-agent: * Allow: / |
禁止抓取某一网页(在正斜线后面列出网页): | Disallow: /private_file.html |
禁止 Google 图片访问某一特定图片: |
User-agent: Googlebot-Image Disallow: /images/dogs.jpg |
禁止 Google 图片访问您网站上的所有图片: |
User-agent: Googlebot-Image Disallow: / |
禁止抓取某一特定类型的文件(例如 .gif): |
User-agent: Googlebot Disallow: /*.gif$ |
禁止抓取整个网站,但允许在这些网页上显示 AdSense 广告(禁止使用除 Mediapartners-Google 以外的所有网页抓取工具)。这种方法会阻止您的网页显示在搜索结果中,但 Mediapartners-Google 网页抓取工具仍能分析这些网页,以确定要向您网站上的访问者显示哪些广告。 |
User-agent: * Disallow: / User-agent: Mediapartners-Google Allow: / |
匹配以某一特定字符串结尾的网址 - 需使用美元符号 ($)。例如,示例代码会禁止访问以 .xls 结尾的所有网址: |
User-agent: Googlebot Disallow: /*.xls$ |
优先顺序
重要的是要注意搜索引擎处理robots.txt文件的方式不同。默认情况下,第一个匹配指令总是有优先权。
但是Google谷歌和Bing必应,更偏重于具体的目录。
就是说:如果指令的字符长度较长,则谷歌和必应会跟看重Allow
指令。
例子
User-agent:*
Allow:/ about / company /
Disallow:/ about /
在上面的示例中/about/
,除了子目录之外,所有搜索引擎(包括Google和Bing)都不允许访问该目录/about/company/
。
例子
User-agent:*
Disallow:/ about /
Allow:/ about / company /
在上面的示例中,除Google和Bing之外的所有搜索引擎都不允许访问/about/
目录,包括/about/company/
。
但允许 Google和Bing 访问/about/company/
,因为该Allow
指令比Disallow
指令长,目录位置更具体。
指令
你只能为每个搜索引擎定义一组指令。为一个搜索引擎设置多组指令会使它们混淆。
-
User-agent
:[必需,每条规则需含一个或多个 User-agent 条目] ,填写搜索引擎蜘蛛(抓取工具)的名称。这是每条规则的首行内容。Web Robots Database 和 Google User Agent(抓取工具)列表中列出了大多数用户代理名称。支持使用星号 (*) 通配符表示路径前缀、后缀或整个字符串。像下例中那样使用星号 (*
) 可匹配除各种 AdsBot 抓取工具之外(此类抓取工具必须明确指定)的所有抓取工具。示例:# 示例 1:仅屏蔽 Googlebot
User-agent: Googlebot
Disallow: /
# 示例 2:屏蔽 Googlebot 和 Adsbot
User-agent: Googlebot
User-agent: AdsBot-Google
Disallow: /
# 示例 3:屏蔽除 AdsBot 抓取工具之外的所有抓取工具
User-agent: *
Disallow: / -
Disallow
:[每条规则需含至少一个或多个 Disallow 或 Allow 条目] 用户代理不应抓取的目录或网页(相对于根网域而言)。如果要指定网页,就应提供浏览器中显示的完整网页名称;如果要指定目录,则应以标记“/”结尾。支持使用通配符“*”表示路径前缀、后缀或整个字符串。 -
Allow
:[每条规则需含至少一个或多个 Disallow 或 Allow 条目] 上文中提到的用户代理应抓取的目录或网页(相对于根网域而言)。此指令用于替换 Disallow 指令,从而允许抓取已禁止访问的目录中的子目录或网页。如果要指定网页,就应提供浏览器中显示的完整网页名称;如果要指定目录,则应以标记“/”结尾。支持使用通配符“*”表示路径前缀、后缀或整个字符串。 -
Sitemap
:[可选,每个文件可含零个或多个 Sitemap 条目] 相应网站的站点地图的位置。必须是完全限定的网址;Google 不会假定存在或检查是否存在 http/https/www/非 www 等网址变体。站点地图是一种用于指示 Google 应抓取哪些内容(而不是可以或无法抓取哪些内容)的好方法。详细了解站点地图。 示例:Sitemap: https://example.com/sitemap.xml
Sitemap: http://www.example.com/sitemap.xml
要尽可能具体
disallow指令也会触发部分匹配。
在定义Disallow
指令时尽可能具体,以防止无意中禁止访问文件。
例子
User-agnet:*
Disallow:/directory
上面的示例不允许搜索引擎访问:
-
/directory
-
/directory/
-
/directory-name-1
-
/directory-name.html
-
/directory-name.php
-
/directory-name.pdf
所以要指明那个目录是需要被禁止爬行的。
另外
网站管理员必须使蜘蛛程序远离某些服务器上的目录——保证服务器性能。比如:大多数网站服务器都有程序储存在“cgi-bin”目录下,因此在robots.txt文件中加入“Disallow: /cgi-bin”是个好主意,这样能够避免将所有程序文件被蜘蛛索引,可以节省服务器资源。一般网站中不需要蜘蛛抓取的文件有:后台管理文件、程序脚本、附件、数据库文件、编码文件、样式表文件、模板文件、导航图片和背景图片等等。
特定User Agent的指令,不包含在所有User Agent抓取工具的指令
这个是什么意思?
让我们看一个明确的例子:
User-agent: *
Disallow:/ secret /
Disallow:/ test /
Disallow:/ not-started-yet /
User-agent:googlebot
Disallow:/ not-started-yet /
在上面的示例中,除Google之外的所有搜索引擎都不允许访问/secret/
,/test/
和/not-launched-yet/
。
Google不允许访问/not-launched-yet/
,但允许访问/secret/
和/test/
。
如果您不想让googlebot访问/secret/
,/not-launched-yet/
,那么需要googlebot
特别重复这些指令:
User-agent:*
Disallow:/ secret /
Disallow:/ test /
Disallow:/ not-started-yet /
User-agent:googlebot
Disallow:/ secret /
Disallow:/ not-started-yet /
-
页面仍出现在搜索结果中
由于robots.txt而导致搜索引擎无法访问的网页,但如果它们是从已抓取的网页进行链接,则仍会显示在搜索结果中。例子:
Protip:可以使用Google Search Console的网址删除工具从Google中删除这些网址。请注意,这些网址只会被暂时删除。为了让他们不在Google的结果页面中,需要每90天删除一次网址。
-
缓存
谷歌表示robots.txt文件通常缓存最多24小时。在robots.txt文件中进行更改时,请务必考虑到这一点。
目前还不清楚其他搜索引擎如何处理robots.txt的缓存,但一般来说,最好避免缓存你的robots.txt文件,以避免搜索引擎花费超过必要的时间来接收更改。
-
文件大小
对于robots.txt文件,Google目前支持的文件大小限制为500 kb。可以忽略此最大文件大小之后的任何内容。
检查robots.txt文件和URL
可以在旧版谷歌站长工具进行检查。
点击 抓取 > robots.txt测试工具
可以看到你的robots内容,下面输入想测试的url,点击测试,就能知道该url是否有被robots.txt的指令给限制了。
也可以通过下面链接直接进入:
https://support.google.com/webmasters/answer/6062598?hl=zh-Hans
-
确保所有重要页面都是可抓取的
-
不要阻止网站JavaScript和CSS文件
-
在站长工具检查重要的URL是否被禁止抓取
-
正确大写目录,子目录和文件名
-
将robots.txt文件放在网站根目录中
-
Robots.txt文件区分大小写,文件必须命名为“robots.txt”(没有其他变体)
-
请勿使用robots.txt文件隐藏私人用户信息,因为它仍然可见
-
将站点地图位置添加到robots.txt文件中。
如果你有一个子域或多个子域在网站,那么你将需要对每个子域以及在主根域robots.txt文件。
这看起来像这个
store.yoursite.com/robots.txt和yoursite.com/robots.txt。
原因是,其他页面可能链接到该信息,如果有直接链接,它将绕过robots.txt规则,并且内容可能仍会被索引。
如果您需要阻止您的网页在搜索结果中真正被编入索引,请使用不同的方法,例如添加密码保护或向这些网页添加noindex元标记。Google无法登录受密码保护的网站/网页,因此他们无法抓取或索引这些网页。
不要在robots.txt中使用noindex
虽然有人说noindex
在robots.txt文件中使用指令是个好主意,但它不是官方标准,谷歌公开建议不要使用它。
谷歌尚未明确原因,但我们认为我们应该认真对待他们的建议,因为:
-
如果使用多种方式发出不索引的信号,那么很难跟踪哪些页面不应该被索引。
-
该
noindex
指令不是万无一失的,因为它不是官方标准。可能它不会被谷歌100%追踪。 -
我们只知道Google使用该
noindex
指令,其他搜索引擎(可能)不会将其用于noindex页面。
如果你之前从未使用过robots.txt文件,可能会有点紧张,但请放心使用,而且设置相当简单。
一旦熟悉了文件的细节,就可以增强网站的搜索引擎优化。
通过正确设置robots.txt文件,将帮助搜索引擎爬虫明智地花费他们的抓取预算,并帮助确保他们不浪费时间和资源来抓取不需要抓取的网页。
这将有助于他们以尽可能最好的方式在SERP中组织和显示你的网站内容,意味着你将获得更多的曝光。
设置robots.txt文件并不一定需要花费大量的时间和精力。在大多数情况下,它是一次性设置,然后可以进行一些小的调整和更改,以帮助更好地塑造网站。
我希望本文中介绍的做法、提示和建议有助你着手创建/调整你的网站robots.txt文件。
1. 百度蜘蛛:Baiduspider网上的资料百度蜘蛛名称有BaiduSpider、baiduspider等,都洗洗睡吧,那是旧黄历了。百度蜘蛛最新名称为Baiduspider。日志中还发现了Baiduspider-image这个百度旗下蜘蛛,查了下资料(其实直接看名字就可以了……),是抓取图片的蜘蛛。常见百度旗下同类型蜘蛛还有下面这些:Baiduspider-mobile(抓取wap)、Baiduspider-image(抓取图片)、Baiduspider-video(抓取视频)、Baiduspider-news(抓取新闻)。注:以上百度蜘蛛目前常见的是Baiduspider和Baiduspider-image两种。
2. 谷歌蜘蛛:Googlebot这个争议较少,但也有说是GoogleBot的。谷歌蜘蛛最新名称为“compatible; Googlebot/2.1;”。还发现了Googlebot-Mobile,看名字是抓取wap内容的。
3. 360蜘蛛:360Spider,它是一个很“勤奋抓爬”的蜘蛛。
4、SOSO蜘蛛:Sosospider,也可为它颁一个“勤奋抓爬”奖的蜘蛛。
5、雅虎蜘蛛:“Yahoo! Slurp China”或者Yahoo!名称中带“Slurp”和空格,名称有空格robots里名称可以使用“Slurp”或者“Yahoo”单词描述,不知道有效无效。
6、有道蜘蛛:YoudaoBot,YodaoBot(两个名字都有,中文拼音少了个U字母读音差别很大嘎,这都会少?)
7、搜狗蜘蛛:Sogou News Spider搜狗蜘蛛还包括如下这些:
Sogou web spider、Sogou inst spider、Sogou spider2、Sogou blog、Sogou News Spider、Sogou Orion spider,(参考一些网站的robots文件,搜狗蜘蛛名称可以用Sogou概括,无法验证不知道有没有效)看看最权威的百度的robots.txt ,http://www.baidu.com/robots.txt 就为Sogou搜狗蜘蛛费了不少字节,占了一大块领地。“Sogou web spider;Sogou inst spider;Sogou spider2;Sogou blog;Sogou News Spider;Sogou Orion spider”目前6个,名称都带空格。线上常见”Sogou web spider/4.0″ ;”Sogou News Spider/4.0″ ;”Sogou inst spider/4.0″ 可以为它颁个“占名为王”奖。
8、MSN蜘蛛:msnbot,msnbot-media(只见到msnbot-media在狂爬……)
9、必应蜘蛛:bingbot线上(compatible; bingbot/2.0;)
10、一搜蜘蛛:YisouSpider
11、Alexa蜘蛛:ia_archiver
12、宜sou蜘蛛:EasouSpider
13、即刻蜘蛛:JikeSpider
14、一淘网蜘蛛:EtaoSpider“Mozilla/5.0 (compatible; EtaoSpider/1.0; http://省略/EtaoSpider)”根据上述蜘蛛中选择几个常用的允许抓取,其余的都可以通过robots屏蔽抓取。如果你暂时空间流量还足够使用,等流量紧张了就保留几个常用的屏蔽掉其它蜘蛛以节省流量。至于那些蜘蛛抓取对网站能带来有利用的价值,网站的管理者眼睛是雪亮的。
另外还发现了如 YandexBot、AhrefsBot和ezooms.bot这些蜘蛛,据说这些蜘蛛国外,对中文网站用处很小。那不如就节省下资源。
Peace Out
获取更多国外SEM、SEO干货
给我【在看】
你也越好看!
作者:图帕先生 来源:图帕先生
本文为作者独立观点,不代表出海笔记立场,如若转载请联系原作者。