Robots.txt是网站上最简单的文件之一,但它也是最容易弄乱的文件之一。只有一个字符不对,会对您的SEO造成严重破坏,并阻止搜索引擎访问您网站上的重要内容。
这就是为什么robots.txt错误配置非常普遍的原因-即使在经验丰富的SEO专业人员中也是如此。
在本指南中,您将学习:
- 什么是robots.txt文件
- robots.txt是什么样的
- Robots.txt用户代理和指令
- 是否需要robots.txt文件
- 如何找到您的robots.txt文件
- 如何创建robots.txt文件
- Robots.txt最佳做法
- 示例robots.txt文件
- 如何审核robots.txt文件中的问题
什么是robots.txt文件?
robots.txt文件会告诉搜索引擎在您的网站上可以或不能进入的位置。
首先,它列出了您想从搜索引擎(如Google)中锁定的所有内容。您还可以告诉某些搜索引擎(而非Google)如何 抓取允许的内容。重要的提示
大多数搜索引擎都是听话的。他们没有打破条目的习惯。就是说,有些人并不害羞选择一些隐喻的锁。
Google不是那些搜索引擎之一。他们遵守robots.txt文件中的说明。
只是知道有些搜索引擎完全忽略了它。
robots.txt文件是什么样的?
这是robots.txt文件的基本格式:
站点地图:[站点地图的URL位置] 用户代理:[机器人标识符] [指令1] [指令2] [指令...] 用户代理:[另一个漫游器标识符] [指令1] [指令2] [指令...]
如果您以前从未看过这些文件之一,这似乎令人生畏。但是,语法非常简单。简而言之,您可以通过在漫游器的用户代理 后面加上指令来为漫游器分配规则。
让我们更详细地探讨这两个组件。
用户代理
每个搜索引擎用不同的用户代理标识自己。您可以在robots.txt文件中为每个设置自定义说明。有数百个用户代理,但以下是一些对SEO有用的代理:
- Google: Googlebot
- Google图片: Googlebot图片
- 必应: Bingbot
- 雅虎: S
- 百度:百度蜘蛛
- DuckDuckGo: DuckDuckBot
边注。 robots.txt中的所有用户代理均区分大小写。
您还可以使用星号(*)通配符将指令分配给所有用户代理。
例如,假设您要阻止除Googlebot之外的所有bot抓取您的网站。这是您的处理方式:
用户代理: * 不允许: / 用户代理:Googlebot 允许:/
请注意,您的robots.txt文件可以包含任意数量的用户代理指令。就是说,每次您声明一个新的用户代理时,它就像一个干净的表象。换句话说,如果您为多个用户代理添加指令,则为第一个用户代理声明的指令不适用于第二个或第三个或第四个,依此类推。
该规则的例外是,您多次声明同一用户代理。在这种情况下,所有相关指令都将被组合并遵循。重要 提示
抓取工具仅遵循在最准确地适用于它们的用户代理下声明的规则。这就是为什么上面的robots.txt文件阻止除Googlebot(和其他Google bot)之外的所有bot爬行该网站的原因。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指令一样,如果您在allow指令之后未能定义路径,搜索引擎将忽略它。有关规则冲突的说明
除非您小心,否则禁止和允许指令很容易彼此冲突。在下面的示例中,我们禁止访问/blog/
并允许访问/blog
。
用户代理: * 禁止:/ blog / 允许:/博客
在这种情况下,URL /blog/post-title/
似乎被禁止和允许。那么哪个赢?
对于Google和Bing,规则是字符最多的指令获胜。这是不允许的指令。
Disallow: /blog/
(6个字符)Allow: /blog
(5个字符)
如果allow和disallow指令的长度相等,则限制性最小的指令获胜。在这种情况下,这将是allow指令。边注。 在这里,/blog
(不带斜杠)仍然可以访问和检索。
至关重要的是,这仅适用于Google和Bing。其他搜索引擎会监听第一个匹配的指令。在这种情况下,那是不允许的。
网站地图
使用此指令可以指定站点地图在搜索引擎中的位置。如果您不熟悉站点地图,它们通常会包含您希望搜索引擎进行爬网和编制索引的页面。
这是使用sitemap指令的robots.txt文件的示例:
站点地图:https://www.domain.com/sitemap.xml 用户代理: * 禁止:/ blog / 允许:/ blog / post-title /
在robots.txt文件中包含站点地图有多重要?如果您已经通过Search Console提交了,那么对于Google来说有点多余。但是,它的确告诉了Bing等其他搜索引擎在哪里可以找到您的站点地图,因此这仍然是一种好习惯。
请注意,您无需为每个用户代理重复多次sitemap指令。它不仅仅适用于一个。因此,最好在robots.txt文件的开头或结尾添加站点地图指令。例如:
站点地图:https://www.domain.com/sitemap.xml 用户代理:Googlebot 禁止:/ blog / 允许:/ blog / post-title / 用户代理:Bingbot 禁止:/ services /
Google ,Ask,Bing和Yahoo都支持 Sitemap指令。边注。 您可以在robots.txt文件中添加任意数量的站点地图。
不支持的指令
以下是Google不再支持的指令-从技术上讲,其中一些从不支持。
抓取延迟
以前,您可以使用此伪指令以秒为单位指定爬网延迟。例如,如果您希望Googlebot在每次抓取操作后等待5秒钟,则可以将抓取延迟设置为5,如下所示:
用户代理:Googlebot 抓取延迟:5
Google不再支持此指令,但Bing和Yandex支持 。
就是说,在设置此伪指令时要特别小心,尤其是在您拥有大型站点的情况下。如果您将抓取延迟设置为5秒,那么就限制了漫游器每天最多抓取17280个URL。如果您拥有数百万个页面,那不是很有帮助,但是如果您的网站很小,则可以节省带宽。
无索引
该指令从未得到Google的正式支持。但是,直到最近,人们还认为Google拥有一些“处理不受支持和未发布的规则的代码(例如noindex)。”因此,如果您想阻止Google将您博客上的所有帖子编入索引,则可以使用以下指令:
用户代理:Googlebot Noindex:/ blog /
但是,在2019年9月1日,谷歌明确表示不支持该指令。如果要从搜索引擎中排除页面或文件,请改用meta robots标记或x‑robots HTTP标头。
Nofollow
这是Google从未正式支持的另一条指令,用于指示搜索引擎不要遵循特定路径下页面和文件上的链接。例如,如果您想阻止Google跟踪博客上的所有链接,则可以使用以下指令:
用户代理:Googlebot Nofollow:/ blog /
Google宣布将于2019年9月1日正式停止支持该指令。如果您现在要立即取消跟踪页面上的所有链接,则应使用robots元标记或x‑robots标头。如果要告诉Google不要遵循页面上的特定链接,请使用rel =“ nofollow”链接属性。
您是否需要robots.txt文件?
对于许多网站,尤其是小型网站,拥有robots.txt文件并不是至关重要的。
就是说,没有理由没有。它使您可以更好地控制搜索引擎可以在您的网站上访问和不可以在网站上访问,这可以帮助解决以下问题:
- 防止重复内容的爬行;
- 将网站的各个部分(例如您的登台站点)保持私密;
- 防止抓取内部搜索结果页面;
- 防止服务器过载;
- 防止Google浪费“ 抓取预算”。
- 防止图片,视频和资源文件出现在Google搜索结果中。
请注意,尽管Google通常不会为robots.txt中被阻止的网页编制索引,但是无法保证使用robots.txt文件将其排除在搜索结果之外。
就像Google所说的那样,如果内容是从网络上的其他地方链接到的,则它可能仍会出现在Google搜索结果中。
如何找到您的robots.txt文件
如果您的网站上已经有robots.txt文件,则可以在domain.com/robots.txt上进行访问。导航到浏览器中的URL。如果您看到类似这样的内容,则说明您有一个robots.txt文件:

如何创建robots.txt文件
如果您还没有robots.txt文件,则创建一个文件很容易。只需打开一个空白的.txt文档并开始输入指令即可。例如,如果您想禁止所有搜索引擎检索/admin/
目录,则它看起来像这样:
用户代理: * 禁止:/ admin /
继续建立指令,直到对所拥有的东西满意为止。将文件另存为“ robots.txt”。
另外,您还可以使用robots.txt产生像这一个。
使用这样的工具的优点是可以最大程度地减少语法错误。这很好,因为一个错误可能会导致您的网站出现SEO灾难-因此谨慎行事会付出很大的代价。
缺点是它们在可定制性方面受到一些限制。
将robots.txt文件放在何处
将robots.txt文件放置在其所应用的子域的根目录中。例如,要控制domain.com上的爬网行为,应该可以在domain.com/robots.txt上访问robots.txt文件。
如果要控制在 Blog.domain.com之类的子域上进行爬网,则应该可以在blog.domain.com/robots.txt上访问robots.txt文件。
Robots.txt文件最佳做法
请记住这些,以避免常见错误。
为每个指令换行
每个指令应放在新的一行。否则,它将使搜索引擎感到困惑。
坏:
用户代理:*不允许:/ directory /不允许:/ another-directory /
好:
用户代理: * 禁止:/ directory / 禁止:/ another-directory /
使用通配符简化说明
您不仅可以使用通配符(*)将指令应用于所有用户代理,而且可以在声明指令时匹配URL模式。例如,如果您想防止搜索引擎访问您网站上的参数化产品类别URL,则可以像这样列出它们:
用户代理: * 禁止:/产品/ T恤? 不允许:/产品/帽衫? 不允许:/产品/夹克? …
但这不是很有效。最好使用这样的通配符简化事情:
用户代理: * 不允许:/ products / *?
此示例阻止搜索引擎抓取/ product /子文件夹下包含问号的所有URL。换句话说,任何参数化的产品类别URL。
使用“ $”指定URL的结尾
包括“ $”符号以标记URL的结尾。例如,如果您想防止搜索引擎访问您网站上的所有.pdf文件,则robots.txt文件可能如下所示:
用户代理: * 禁止:/ *。pdf $
在此示例中,搜索引擎无法访问任何以.pdf结尾的URL。这意味着他们无法访问/file.pdf,但是他们可以访问/file.pdf?id=68937586,因为这不以“ .pdf”结尾。
每个用户代理只能使用一次
如果您多次指定相同的用户代理,则Google不会介意。它只会将各种声明中的所有规则组合为一个规则并遵循它们。例如,如果您的robots.txt文件中包含以下用户代理和指令,则…
用户代理:Googlebot 禁止:/ a / 用户代理:Googlebot 禁止:/ b /
…Googlebot 不会 抓取这些子文件夹中的任何一个。
也就是说,只声明一次每个用户代理是有意义的,因为它不那么令人困惑。换句话说,通过保持整洁和简单,您不太可能犯重大错误。
使用专一性来避免意外错误
如果在设置指令时未提供特定的指令,则可能导致容易错过的错误,可能会对SEO造成灾难性的影响。例如,假设您有一个多语言站点,并且您正在使用德语版本,该版本将在/ de /子目录下提供。
由于尚未完全准备就绪,因此您希望阻止搜索引擎访问它。
下面的robots.txt文件将阻止搜索引擎访问该子文件夹及其中的所有内容:
用户代理: * 禁止:/ de
但这也会阻止搜索引擎抓取以开头的任何页面或文件 /de
。
例如:
/designer-dresses/
/delivery-information.html
/depeche-mode/t-shirts/
/definitely-not-for-public-viewing.pdf
在这种情况下,解决方案很简单:添加斜杠。
用户代理: * 禁止:/ de /
使用注释向人类解释您的robots.txt文件
注释有助于向开发人员解释您的robots.txt文件,甚至可能对您将来的自我也有帮助。要添加评论,请在该行以井号(#)开始。
#这指示Bing不要抓取我们的网站。 用户代理:Bingbot 不允许: /
抓取工具将忽略以哈希开头的行上的所有内容。
为每个子域使用单独的robots.txt文件
Robots.txt仅控制其托管子域上的爬网行为。如果您想控制其他子域上的抓取,则需要一个单独的robots.txt文件。
例如,如果您的主站点位于domain.com上, 而您的博客位于blog.domain.com上,则您将需要两个robots.txt文件。一个应该进入主域的根目录,另一个应该进入博客的根目录。
示例robots.txt文件
以下是robots.txt文件的一些示例。这些主要是为了获得灵感,但是如果碰巧符合您的要求,请将其复制粘贴到文本文档中,另存为“ robots.txt”,然后将其上传到适当的目录中。
所有机器人的无障碍访问
用户代理: * 不允许:
边注。在指令后未能声明URL会使该指令变得多余。换句话说,搜索引擎会忽略它。这就是为什么此disallow指令对网站无效的原因。搜索引擎仍然可以抓取所有页面和文件。
所有机器人均无权访问
用户代理: * 不允许: /
为所有机器人阻止一个子目录
用户代理: * 不允许:/文件夹/
为所有漫游器阻止一个子目录(允许包含一个文件)
用户代理: * 不允许:/文件夹/ 允许:/folder/page.html
为所有机器人阻止一个文件
用户代理: * 禁止:/this-is-a-file.pdf
禁止所有漫游器使用一种文件类型(PDF)
用户代理: * 禁止:/ *。pdf $
仅阻止Googlebot的所有参数化网址
用户代理:Googlebot 不允许: /*?
如何审核robots.txt文件中的错误
Robots.txt错误很容易在网络上漏出,因此留意问题是值得的。
为此,请在Search Console的“覆盖率”报告中定期检查与robots.txt相关的问题。以下是您可能会看到的一些错误,它们的含义以及如何解决这些错误。是否需要检查与某个页面相关的错误?
将网址粘贴到Search Console中的Google 网址检查工具中。如果被robots.txt阻止,您应该会看到类似以下内容:
提交的网址已被robots.txt阻止
这意味着您提交的站点地图中的网址中至少有一个被robots.txt阻止了。
如果您正确创建了站点地图, 并且排除了规范化,无索引和重定向的 页面,则robots.txt不应阻止任何已提交的页面。如果是这样,请调查受影响的页面,然后相应地调整robots.txt文件以删除该页面的阻止。
您可以使用Google的robots.txt测试器 查看哪个指令阻止了该内容。这样做时要小心。容易产生影响其他页面和文件的错误。
被robots.txt阻止
这意味着您有被robots.txt阻止的内容,该内容目前尚未在Google中建立索引。
如果此内容很重要且应建立索引,请删除robots.txt中的抓取块。(也值得确保内容未编入索引)。如果您已阻止robots.txt中的内容,目的是将其从Google的索引中排除,请删除抓取功能,并改用robots元标记或x‑robots标头。这是保证从Google索引中排除内容的唯一方法。边注。 尝试从搜索结果中排除页面时,删除爬网块至关重要。无法执行此操作,Google将看不到noindex标记或HTTP标头-因此它将保持索引状态。
已被robots.txt阻止,但已被索引
这意味着robots.txt阻止的某些内容仍在Google中建立了索引。
再一次,如果您尝试从Google的搜索结果中排除此内容,robots.txt并不是正确的解决方案。删除爬网块,而改用meta robots标记或x‑robots-tag HTTP标头 以防止建立索引。
如果您无意中阻止了该内容,并希望将其保留在Google的索引中,请删除robots.txt中的抓取阻止。这可能有助于提高内容在Google搜索中的可见性。
常见问题
以下是一些常见问题,这些问题在本指南的其他地方并不自然。如果有任何遗漏,请在评论中告诉我们,我们将相应地更新此部分。
robots.txt文件的最大大小是多少?
500 KB (大约)。
WordPress中的robots.txt在哪里?
相同位置:domain.com/robots.txt。
如何在WordPress中编辑robots.txt?
可以手动操作,也可以使用许多WordPress SEO插件( 例如Yoast)之一,让您从WordPress后端编辑robots.txt。
如果我禁止访问robots.txt中的未索引内容,会发生什么情况?
Google永远不会看到noindex指令,因为它无法抓取页面。
最后的想法
Robots.txt是一个简单但功能强大的文件。明智地使用它,可以对SEO产生积极影响。随意使用它,好吧,您会后悔的。
版权声明:本文来自网络,版权归原发布者所有,本网不为内容负任何责任,如有不妥之处,请联系小包网络,转载请保留出处!本文地址:https://www.seo023.org/jishu/2667.html