控制抓取和索引:Robots.txt 和标签的 SEO 指南
已发表: 2019-02-19优化抓取预算和阻止索引页面中的机器人是许多 SEO 熟悉的概念。 但魔鬼在细节中。 尤其是近年来最佳实践发生了显着变化。
对 robots.txt 文件或机器人标签的一个小改动可能会对您的网站产生巨大影响。 为了确保对您的网站产生积极的影响,今天我们将深入研究:
优化抓取预算
什么是 Robots.txt 文件
什么是元机器人标签
什么是 X 机器人标签
机器人指令和 SEO
最佳实践机器人清单
优化抓取预算
搜索引擎蜘蛛对它可以和想要在您的网站上抓取多少页面有一个“允许”。 这被称为“抓取预算”。
在 Google Search Console (GSC)“抓取统计”报告中查找您网站的抓取预算。 请注意,GSC 是 12 个机器人的集合,它们并不都专门用于 SEO。 它还收集作为 SEA 机器人的 AdWords 或 AdSense 机器人。 因此,此工具可让您了解全局爬网预算,但不能了解其确切的重新分配。
为了使该数字更具可操作性,请将每天抓取的平均页面数除以您网站上的可抓取页面总数 - 您可以向开发人员询问数字或运行无限制的网站抓取工具。 这将为您提供一个预期的抓取比率,供您开始优化。
想要更深入? 通过分析您网站的服务器日志文件,更详细地了解 Googlebot 的活动情况,例如访问了哪些网页,以及其他抓取工具的统计信息。
优化抓取预算的方法有很多,但一个简单的起点是查看 GSC“覆盖率”报告以了解 Google 当前的抓取和索引行为。
如果您看到诸如“提交的 URL 标记为 'noindex'”或“提交的 URL 被 robots.txt 阻止”之类的错误,请与您的开发人员一起修复它们。 对于任何机器人排除项,请调查它们以了解它们是否从 SEO 角度具有战略意义。
一般来说,搜索引擎优化的目标应该是尽量减少对机器人的爬行限制。 改进您网站的架构以使 URL 对搜索引擎有用且可访问是最佳策略。
谷歌自己指出,“一个可靠的信息架构可能比专注于抓取优先级更有效地利用资源”。
话虽如此,了解 robots.txt 文件和机器人标签可以做什么来指导抓取、索引和链接资产的传递是有益的。 更重要的是,何时以及如何最好地利用它进行现代 SEO。
[案例研究] 管理 Google 的机器人抓取
什么是 Robots.txt 文件
在搜索引擎抓取任何页面之前,它会检查 robots.txt。 该文件告诉机器人他们有权访问哪些 URL 路径。 但这些条目只是指令,而不是命令。
Robots.txt不能像防火墙或密码保护一样可靠地阻止抓取。 它相当于未上锁的门上的“请不要进入”标志。
礼貌的爬虫,比如各大搜索引擎,一般都会听从指令。 恶意爬虫,如电子邮件抓取工具、垃圾邮件机器人、恶意软件和扫描网站漏洞的蜘蛛,通常不会引起注意。
更重要的是,它是一个公开的文件。 任何人都可以看到您的指令。
不要使用您的 robots.txt 文件来:
- 隐藏敏感信息。 使用密码保护。
- 阻止访问您的登台和/或开发站点。 使用服务器端身份验证。
- 明确阻止敌对爬虫。 使用 IP 阻止或用户代理阻止(也就是使用 .htaccess 文件中的规则或 CloudFlare 等工具来阻止特定的爬虫访问)。
每个网站都应该有一个有效的 robots.txt 文件,其中至少包含一个指令分组。 没有一个,默认情况下所有机器人都被授予完全访问权限——因此每个页面都被视为可抓取的。 即使这是您的意图,最好使用 robots.txt 文件向所有利益相关者说明这一点。 另外,如果没有,您的服务器日志将充满对 robots.txt 的失败请求。
robots.txt 文件的结构
要被爬虫确认,您的 robots.txt 必须:
- 是一个名为“robots.txt”的文本文件。 文件名区分大小写。 “Robots.TXT”或其他变体将不起作用。
- 位于您的规范域和子域(如果相关)的顶级目录中。 例如,要控制对 https://www.example.com 下所有 URL 的抓取,robots.txt 文件必须位于 https://www.example.com/robots.txt 和 subdomain.example.com 位于subdomain.example.com/robots.txt。
- 返回 200 OK 的 HTTP 状态。
- 使用有效的 robots.txt 语法 – 使用 Google Search Console robots.txt 测试工具进行检查。
robots.txt 文件由指令分组组成。 参赛作品主要包括:
- 1.用户代理:解决各种爬虫。 您可以为所有机器人设置一个组,也可以使用组来命名特定的搜索引擎。
- 2. Disallow:指定不被上述用户代理抓取的文件或目录。 每个块可以有一个或多个这样的行。
有关用户代理名称的完整列表和更多指令示例,请查看 Yoast 上的 robots.txt 指南。
除了“User-agent”和“Disallow”指令之外,还有一些非标准指令:
- 允许:为父目录指定禁止指令的例外。
- Crawl-delay:通过告诉机器人在访问页面之前等待多少秒来限制重型爬虫。 如果您获得的自然会话很少,则 crawl-delay 可以节省服务器带宽。 但只有当爬虫主动导致服务器负载问题时,我才会投入精力。 Google 不承认此命令,在 Google Search Console 中提供了限制抓取速度的选项。
- clean-param:避免重新爬取动态参数生成的重复内容。
- 无索引:旨在控制索引而不使用任何爬网预算。 谷歌不再正式支持它。 虽然有证据表明它可能仍会产生影响,但它并不可靠,也不被约翰·穆勒等专家推荐。
@maxxeight @google @DeepCrawl 我真的会避免在那里使用 noindex 。
——??? 约翰 ???? (@JohnMu)2015 年 9 月 1 日
- 站点地图:提交 XML 站点地图的最佳方式是通过 Google 搜索控制台和其他搜索引擎的网站管理员工具。 但是,在 robots.txt 文件的基础上添加站点地图指令有助于其他可能不提供提交选项的爬虫。
robots.txt 对 SEO 的限制
我们已经知道 robots.txt 无法阻止所有机器人的抓取。 同样,禁止爬虫从一个页面并不会阻止它被包含在搜索引擎结果页面 (SERP) 中。
如果被阻止的页面有其他强大的排名信号,Google 可能会认为它与在搜索结果中显示相关。 尽管没有爬取页面。
由于 Google 不知道该 URL 的内容,因此搜索结果如下所示:
要明确阻止页面出现在 SERP 中,您需要使用“noindex”机器人元标记或 X-Robots-Tag HTTP 标头。
在这种情况下,不要禁止robots.txt 中的页面,因为必须抓取该页面才能看到并遵守“noindex”标签。 如果 URL 被阻止,则所有 robots 标签都无效。
更重要的是,如果一个页面已经积累了大量的入站链接,但谷歌被 robots.txt 阻止了这些页面的抓取,而这些链接是谷歌已知的,那么链接资产就会丢失。
什么是元机器人标签
放置在每个 URL 的 HTML 中,meta name="robots" 告诉爬虫是否以及如何“索引”内容以及是否“关注”(即爬取)所有页面链接,传递链接权益。
使用通用元名称 =“robots”,该指令适用于所有爬虫。 您还可以指定特定的用户代理。 例如,元名称=“googlebot”。 但是很少需要使用多个元机器人标签来为特定的蜘蛛设置指令。
使用元机器人标签时有两个重要的考虑因素:
- 与 robots.txt 类似,元标记是指令,而不是命令,因此可能会被某些机器人忽略。
- robots nofollow 指令仅适用于该页面上的链接。 爬虫可能会在没有 nofollow 的情况下跟踪来自另一个页面或网站的链接。 因此,机器人可能仍会到达并索引您不需要的页面。
以下是所有元机器人标签指令的列表:
- index:告诉搜索引擎在搜索结果中显示此页面。 如果没有指定指令,这是默认状态。
- noindex:告诉搜索引擎不要在搜索结果中显示此页面。
- follow:告诉搜索引擎关注该页面上的所有链接并传递权益,即使该页面没有被索引。 如果没有指定指令,这是默认状态。
- nofollow:告诉搜索引擎不要关注此页面上的任何链接或传递股权。
- all:相当于“索引,跟随”。
- none:相当于“noindex, nofollow”。
- noimageindex:告诉搜索引擎不要索引此页面上的任何图像。
- noarchive:告诉搜索引擎不要在搜索结果中显示此页面的缓存链接。
- nocache:与 noarchive 相同,但仅由 Internet Explorer 和 Firefox 使用。
- nosnippet:告诉搜索引擎不要在搜索结果中显示此页面的元描述或视频预览。
- notranslate:告诉搜索引擎不要在搜索结果中提供此页面的翻译。
- 不可用后:告诉搜索引擎在指定日期后不再索引此页面。
- noodp:现在已弃用,它曾经阻止搜索引擎在搜索结果中使用来自 DMOZ 的页面描述。
- noydir:现在已弃用,它曾经阻止 Yahoo 在搜索结果中使用 Yahoo 目录中的页面描述。
- noyaca:阻止 Yandex 在搜索结果中使用来自 Yandex 目录的页面描述。
正如 Yoast 所记录的那样,并非所有搜索引擎都支持所有机器人元标记,或者甚至清楚它们支持和不支持的内容。
* 大多数搜索引擎对此没有具体的文档,但它假设支持排除参数(例如,nofollow)意味着支持积极的等价物(例如,follow)。
** 虽然 noodp 和 noydir 属性可能仍被“支持”,但目录不再存在,并且这些值很可能什么都不做。
通常,机器人标签将设置为“索引,关注”。 一些 SEO 认为在 HTML 中添加这个标签是多余的,因为它是默认的。 相反的论点是,明确的指令规范可能有助于避免任何人为混淆。
请注意:带有“noindex”标签的 URL 被抓取的频率会降低,如果它存在很长时间,最终会导致 Google 不关注该页面的链接。
很难找到一个用例来“nofollow”带有元机器人标签的页面上的所有链接。 使用 rel=”nofollow” 链接属性在单个链接上添加“nofollow”更为常见。 例如,您可能需要考虑向用户生成的评论或付费链接添加 rel=”nofollow” 属性。
对于不涉及基本索引和遵循行为(例如缓存、图像索引和片段处理等)的机器人标签指令,甚至更少有 SEO 用例。
元机器人标签的挑战在于它们不能用于非 HTML 文件,例如图像、视频或 PDF 文档。 这是您可以求助于 X-Robots-Tags 的地方。
什么是 X 机器人标签
X-Robots-Tag 由服务器使用 .htaccess 和 httpd.conf 文件作为给定 URL 的 HTTP 响应标头的元素发送。
任何机器人元标记指令也可以指定为 X-Robots-Tag。 但是,X-Robots-Tag 在顶部提供了一些额外的灵活性和功能。
如果您想:
- 控制非 HTML 文件的机器人行为,而不是单独的 HTML 文件。
- 控制页面特定元素的索引,而不是整个页面。
- 为页面是否应被索引添加规则。 例如,如果作者发表的文章超过 5 篇,则将其个人资料页面编入索引。
- 在站点范围内应用索引并遵循指令,而不是特定于页面。
- 使用正则表达式。
避免在同一页面上同时使用元机器人和 x-robots-tag——这样做是多余的。
要查看 X-Robots-Tags,您可以使用 Google Search Console 中的“Fetch as Google”功能。
机器人指令和 SEO
所以现在你知道三个机器人指令之间的区别了。
robots.txt 专注于节省抓取预算,但不会阻止页面显示在搜索结果中。 它充当您网站的第一个看门人,指示机器人在请求页面之前不要访问。
两种类型的机器人标签都专注于控制索引和链接资产的传递。 机器人元标记仅在页面加载后才有效。 虽然 X-Robots-Tag 标头提供更精细的控制,并且在服务器响应页面请求后才有效。
有了这种理解,SEO 可以发展我们使用机器人指令来解决抓取和索引挑战的方式。
阻止机器人以节省服务器带宽
问题:分析您的日志文件,您会看到许多用户代理占用了带宽但几乎没有回报。
- SEO 爬虫,例如 MJ12bot(来自 Majestic)或 Ahrefsbot(来自 Ahrefs)。
- 离线保存数字内容的工具,例如 Webcopier 或 Teleport。
- 与您的市场不相关的搜索引擎,例如百度蜘蛛或 Yandex。
次优解决方案:使用 robots.txt 阻止这些蜘蛛,因为它不能保证被兑现,而且是一个相当公开的声明,可以为感兴趣的各方提供竞争见解。
最佳实践方法:用户代理阻塞的更微妙的指令。 这可以通过不同的方式完成,但通常是通过编辑您的 .htaccess 文件以将任何不需要的蜘蛛请求重定向到 403 - 禁止页面来完成。
使用抓取预算的内部站点搜索页面
问题:在许多网站上,内部站点搜索结果页面是在静态 URL 上动态生成的,这会占用爬网预算,并且如果被编入索引,可能会导致内容稀少或重复内容问题。
次优解决方案:禁止带有 robots.txt 的目录。 虽然这可以防止爬虫陷阱,但它限制了您对关键客户搜索的排名以及此类页面传递链接资产的能力。
最佳实践方法:将相关的大量查询映射到现有的搜索引擎友好 URL。 例如,如果我搜索“samsung phone”,而不是为 /search/samsung-phone 创建一个新页面,而是重定向到 /phones/samsung。
如果无法做到这一点,请创建基于参数的 URL。 然后,您可以轻松地指定是否希望在 Google Search Console 中抓取参数。
如果您确实允许抓取,请分析此类页面的质量是否足够高以进行排名。 如果没有,请添加“noindex,follow”指令作为短期解决方案,同时制定如何提高结果质量以帮助 SEO 和用户体验的策略。
使用机器人阻止参数
问题:查询字符串参数(例如由分面导航或跟踪生成的参数)因消耗爬网预算、创建重复的内容 URL 和拆分排名信号而臭名昭著。
次优解决方案:禁止使用 robots.txt 或“noindex”机器人元标记抓取参数,因为两者(前者立即,后者在较长时期内)都会阻止链接资产的流动。
最佳实践方法:确保每个参数都有明确的存在理由并实施排序规则,该规则仅使用一次键并防止空值。 将 rel=canonical 链接属性添加到合适的参数页面以结合排名能力。 然后在 Google Search Console 中配置所有参数,其中有更精细的选项来传达抓取偏好。 有关更多详细信息,请查看 Search Engine Journal 的参数处理指南。
阻止管理员或帐户区域
问题:阻止搜索引擎抓取任何私人内容并将其编入索引。
次优解决方案:使用 robots.txt 阻止目录,因为这不能保证将私有页面排除在 SERP 之外。
最佳实践方法:使用密码保护来防止爬虫访问页面,并在 HTTP 标头中使用“noindex”指令。
阻止营销登陆页面和感谢页面
问题:您通常需要排除不用于自然搜索的 URL,例如专用电子邮件或 CPC 活动登录页面。 同样,您不希望尚未转换的人通过 SERP 访问您的感谢页面。
次优解决方案:禁止带有 robots.txt 的文件,因为这不会阻止链接包含在搜索结果中。
最佳实践方法:使用“noindex”元标记。
管理现场重复内容
问题:某些网站出于用户体验原因需要特定内容的副本,例如页面的打印机友好版本,但希望确保搜索引擎能够识别规范页面,而不是重复页面。 在其他网站上,重复内容是由于糟糕的开发实践造成的,例如在多个类别 URL 上呈现相同的商品进行销售。
次优解决方案:禁止带有 robots.txt 的 URL 将阻止重复页面传递任何排名信号。 机器人的 Noindexing 最终会导致 Google 将链接也视为“nofollow”,这将防止重复页面传递任何链接权益。
最佳实践方法:如果重复内容没有理由存在,则删除源并 301 重定向到搜索引擎友好的 URL。 如果有存在的理由,添加一个 rel=canonical 链接属性来巩固排名信号。
可访问帐户相关页面的精简内容
问题:与帐户相关的页面,例如登录、注册、购物车、结帐或联系表格,通常内容较少,对搜索引擎几乎没有价值,但对用户来说却是必需的。
次优解决方案:禁止带有 robots.txt 的文件,因为这不会阻止链接包含在搜索结果中。
最佳实践方法:对于大多数网站,这些页面的数量应该很少,您可能会看到实施机器人处理对 KPI 没有影响。 如果您确实需要,最好使用“noindex”指令,除非有此类页面的搜索查询。
使用抓取预算标记页面
问题:不受控制的标记会占用爬网预算,并且通常会导致内容稀少问题。
次优解决方案:禁止使用 robots.txt 或添加“noindex”标签,因为两者都会阻碍 SEO 相关标签的排名并(立即或最终)阻止链接资产的传递。
最佳实践方法:评估每个当前标签的价值。 如果数据显示该页面对搜索引擎或用户几乎没有价值,则 301 重定向它们。 对于在剔除后幸存下来的页面,努力改进页面元素,使它们对用户和机器人都有价值。
JavaScript & CSS 的爬取
问题:以前,机器人无法抓取 JavaScript 和其他富媒体内容。 这已经改变,现在强烈建议允许搜索引擎访问 JS 和 CSS 文件,以便有选择地呈现页面。
次优解决方案:禁止带有 robots.txt 的 JavaScript 和 CSS 文件以节省抓取预算可能会导致索引不佳并对排名产生负面影响。 例如,阻止搜索引擎访问为广告插页式或重定向用户提供服务的 JavaScript 可能会被视为伪装。
最佳实践方法:使用“以 Google 方式获取”工具检查任何呈现问题,或使用“已阻止资源”报告快速了解哪些资源被阻止,两者都可在 Google Search Console 中找到。 如果任何可能阻止搜索引擎正确呈现页面的资源被阻止,请删除 robots.txt 禁止。
Oncrawl 搜索引擎优化爬虫
最佳实践机器人清单
网站因机器人控制错误而意外从 Google 中删除的情况非常普遍。
尽管如此,当您知道如何使用机器人时,它可以成为您的 SEO 武器库的强大补充。 请务必明智谨慎地进行。
为了提供帮助,这里有一个快速清单:
- 使用密码保护保护私人信息
- 使用服务器端身份验证阻止对开发站点的访问
- 限制占用带宽但通过用户代理阻止提供很少价值的爬虫
- 确保主域和任何子域在顶级目录中有一个名为“robots.txt”的文本文件,该文件返回 200 代码
- 确保 robots.txt 文件至少有一个包含用户代理行和禁止行的块
- 确保 robots.txt 文件至少有一个站点地图行,作为最后一行输入
- 在 GSC robots.txt 测试器中验证 robots.txt 文件
- 确保每个可索引页面都指定其机器人标签指令
- 确保 robots.txt、机器人元标记、X-Robots-Tags、.htaccess 文件和 GSC 参数处理之间没有矛盾或多余的指令
- 修复 GSC 覆盖率报告中的任何“提交的 URL 标记为 'noindex'”或“提交的 URL 被 robots.txt 阻止”错误
- 了解 GSC 覆盖报告中任何与机器人相关的排除的原因
- 确保 GSC“被阻止的资源”报告中只显示相关页面
去检查你的机器人处理,并确保你做对了。