|
Robots.txt 是网站上最简单的文件之一,但也是最容易搞乱的文件之一。只要一个字符不合适,就会对您的 SEO 造成严重破坏,并阻止搜索引擎访问您网站上的重要内容。
这就是为什么 robots.txt 错误配置极为常见——即使在经验丰富的 SEO 专业人士中也是如此。
在本指南中,您将学到:
robots.txt 文件是什么
robots.txt 是什么样的
Robots.txt 用户代理和指令
是否需要 robots.txt 文件
如何找到您的 robots.txt 文件
如何创建 robots.txt 文件
Robots.txt 最佳实践
robots.txt 文件示例
如何审核 robots.txt 文件是否存在问题
技术 SEO 初学者指南
技术 SEO 新手?看看我们的
技术 SEO 初学者指南
什么是 robots.txt 文件?
robots.txt 文件告诉搜索引擎可以和不可以访问您网站上的哪些位置。
首先,它列出了您想要锁定以防止 Google 等搜索引擎发现的所有内容。您还可以告诉一些搜索引擎(不是 Google)它们如何 抓取允许的内容。
重要的提示
大多数搜索引擎都是听话的。他们没有破坏条目的习惯。也就是说,有些人并不羞于撬开一些隐喻的锁。
谷歌不是这些搜索引擎之一。他们遵守 robots.txt 文件中的说明。
只是知道有些搜索引擎完全忽略它。
robots.txt 文件是什么样的?
这是 robots.txt 文件的基本格式:
站点地图:[站点地图的 URL 位置]
用户代理:[机器人标识符]
[指令1]
[指令2]
[指令...]
用户代理:[另一个机器人标识符]
[指令1]
[指令2]
[指令...]
如果您以前从未见过这些文件之一,这可能看起来令人畏惧。然而,语法非常简单。简而言之,您可以通过声明其用户代理和指令来为 机器人分配规则。
让我们更详细地探讨这两个组件。
用户代理
每个搜索引擎都使用不同的用户代理来标识自己。您可以在 robots.txt 文件中为每个内容设置自定义说明。有数百个用户代理,但以下是一些对 SEO 有用的用户代理:
谷歌:谷歌机器人
Google 图片: Googlebot-图片
必应:必应机器人
雅虎:啜饮
百度:Baiduspider
DuckDuckGo: DuckDuckBot
边注。 robots.txt 中的所有用户代理均区分大小写。
您还可以使用星号 (*) 通配符将指令分配给所有用户代理。
例如,假设您想要阻止除 Googlebot 之外的所有机器人抓取您的网站。您可以这样做:
用户代理: *
不允许: /
用户代理:Googlebot
允许: /
请注意,您的 robots.txt 文件可以包含针对任意数量的用户代理的指令。也就是说,每次您声明一个新的用户代理时,它都会充当一个干净的状态。换句话说,如果您为多个用户代理添加指令,则为第一个用户代理声明的指令不适用于第二个、第三个或第四个,依此类推。
该规则的例外是当您多次声明相同的用户代理时。在这种情况下,将合并并遵循所有相关指令。
重要的提示
爬网程序仅遵循最准确地适用于它们的用户代理下声明的规则。这就是为什么上面的 robots.txt 文件会阻止除 Googlebot(以及其他 Google 机器人)之外的所有机器人抓取该网站。Googlebot 会忽略不太具体的用户代理声明。
指令
指令是您希望声明的用户代理遵循的规则。
支持的指令
以下是 Google 目前支持的指令及其用途。
不允许
使用此指令指示搜索引擎不要访问特定路径下的文件和页面。例如,如果您想阻止所有搜索引擎访问您的博客及其所有帖子,您的 robots.txt 文件可能如下所示:
用户代理: *
禁止:/博客
边注。 如果您未能在 disallow 指令后定义路径,搜索引擎将忽略它。
允许
使用此指令允许搜索引擎抓取子目录或页面 - 即使在其他不允许的目录中。例如,如果您想阻止搜索引擎访问您博客上除一篇文章之外的所有帖子,那么您的 robots.txt 文件可能如下所示:
用户代理: *
禁止:/博客
允许:/blog/allowed-post
在此示例中,搜索引擎可以访问/blog/allowed-post. 但他们无法访问:
/blog/another-post
/blog/yet-another-post
/blog/download-me.pdf
Google 和 Bing 都支持该指令。
边注。 与 disallow 指令一样,如果您未能在 allowed 指令后定义路径,搜索引擎将忽略它。
关于冲突规则的注释
除非您非常小心,否则禁止和允许指令很容易相互冲突。在下面的示例中,我们禁止访问/blog/ 和允许访问/blog.
用户代理: *
禁止:/博客/
允许:/博客
在本例中,该 URL/blog/post-title/ 似乎既被禁止又被允许。那么哪一个获胜呢?
对于 Google 和 Bing,规则是字符数最多的指令获胜。在这里,这就是禁止指令。
Disallow: /blog/ (6 个字符)
Allow: /blog (5 个字符)
如果允许和禁止指令的长度相等,则限制最少的指令获胜。在这种情况下,这将是允许指令。
边注。 在这里,/blog (没有尾部斜杠)仍然是可访问和可爬行的。
至关重要的是,这只是 Google 和 Bing 的情况。其他搜索引擎侦听第一个匹配指令。在这种情况下,这是不允许的。
网站地图
使用此指令向搜索引擎指定站点地图的位置。如果您不熟悉站点地图,它们通常包含您希望搜索引擎抓取和索引的页面。
以下是使用 sitemap 指令的 robots.txt 文件的示例:
站点地图:
用户代理: *
禁止:/博客/
允许:/blog/post-title/
在 robots.txt 文件中包含站点地图有多重要?如果您已经通过 Search Console 提交,那么这对于 Google 来说有点多余。但是,它确实告诉其他搜索引擎(例如 Bing)在哪里可以找到您的站点地图,因此这仍然是一个很好的做法。
请注意,您不需要为每个用户代理多次重复站点地图指令。它不仅仅适用于一个。因此,您最好在 robots.txt 文件的开头或结尾包含站点地图指令。例如:
站点地图:
用户代理:Googlebot
禁止:/博客/
允许:/blog/post-title/
用户代理:Bingbot
禁止:/服务/
Google支持 站点地图指令,Ask、Bing 和 Yahoo 也是如此。
边注。 您可以在 robots.txt 文件中包含任意数量的站点地图。
不支持的指令
以下是Google 不再支持的指令——其中一些在技术上从未支持过。
爬行延迟
以前,您可以使 电话号码列表 用此指令指定爬网延迟(以秒为单位)。例如,如果您希望 Googlebot 在每次抓取操作后等待 5 秒,则可以将抓取延迟设置为 5,如下所示:
用户代理:Googlebot
爬行延迟:5
Google 不再支持此指令,但Bing 和Yandex 支持。
也就是说,设置此指令时要小心,特别是如果您有一个大网站。如果您将爬网延迟设置为 5 秒,则您将限制机器人每天最多爬网 17,280 个 URL。如果您有数百万个页面,这并不是很有帮助,但如果您有一个小网站,它可以节省带宽。
无索引
该指令从未得到 Google 的正式支持。然而,直到最近,人们还认为 Google 有一些“处理不受支持和未发布的规则(例如 noindex)的代码”。因此,如果您想阻止 Google 将您博客上的所有帖子编入索引,您可以使用以下指令:
用户代理:Googlebot
没有索引:/博客/
然而,2019年9月1日,谷歌明确表示不支持该指令。如果您想从搜索引擎中排除某个页面或文件,请改用元机器人标签或 x-robots HTTP 标头。
不关注
这是 Google 从未正式支持的另一个指令,用于指示搜索引擎不要跟踪特定路径下的页面和文件上的链接。例如,如果您想阻止 Google 跟踪您博客上的所有链接,您可以使用以下指令:
用户代理:Googlebot
不关注:/博客/
Google 宣布于 2019 年 9 月 1 日正式不再支持该指令。如果您现在想要 nofollow 页面上的所有链接,您应该使用 robots 元标记或 x-robots 标头。如果您想告诉 Google 不要跟踪页面上的特定链接,请使用 rel=“nofollow” 链接属性。
|
|