正确设置robots.txt

如果你还不知道,robots.txt是一个重要的服务器工具,它可以直接与搜索引擎通信。您可以使用它来告诉搜索引擎您网站的哪些部分需要索引,哪些部分不能索引。

因此,您或您的开发人员通常会设置一个额外的robots.txt文件来控制开发期间的索引。虽然那很好但很花哨,但当你忘记改回它时就会出现问题。

什么是robots.txt文件以及它们用于什么?

robots.txt文件是驻留在服务器上的文本文件。它包含索引您的网站的规则,是一个直接与搜索引擎通信的工具。

基本上,该文件说明了允许您网站的哪些部分可以编制索引以及他们应该单独留下哪些部分。

但是,为什么要告诉搜索引擎不要在您的网站上抓取某些内容?从SEO的角度来看,这不是有害的吗?实际上有很多原因可以告诉搜索引擎不要抓取您网站上的一些内容,那将是有宜的。

robots.txt最常见的用途之一是从搜索结果中排除仍处于开发阶段的网站。

您的站点的暂存版本也是如此,您可以在将更改提交到实时版本之前尝试更改。

或者,也许您的服务器上有一些您不想在Internet上弹出的文件,因为它们仅供您的内部用户使用。

是否有必要拥有robots.txt?

你真的必须有robots.txt吗?不,即使没有该文件,您的WordPress网站也会被搜索引擎编入索引。

事实上,WordPress本身已经包含了一个虚拟的robots.txt。也就是说,仍然建议您在服务器上创建一个物理副本。它会让事情变得更容易。

但是,您应该注意的一件事是你无法期望所有搜索引擎能对robots.txt的完全服从。该文件将被主要搜索引擎识别和尊重,但恶意抓取工具和低质量搜索抓取工具可能会完全忽略它。

我如何创建一个,我在哪里放?

制作自己的robots.txt就像使用您选择的编辑器创建文本文件并将其称为robots.txt一样简单。只需保存就可以了。说真的,就这么简单。

好的,还有第二步:通过FTP上传它。即使您已将WordPress移动到其自己的目录,该文件通常也会放在您的根文件夹中。一个好的经验法则是将它放在与index.php相同的位置,等待上传完成,然后就完成了。

请注意,您需要为站点的每个子域以及HTTPS等不同协议使用单独的robots.txt文件。

如何在robots.txt中设置规则

现在让我们花一些时间谈论内容。

robots.txt有自己的语法来定义规则。这些规则也称为“指令”。在下文中,我们将介绍如何使用它们让爬虫知道他们在您的网站上能做什么和不能做什么。

基本的robots.txt语法

不要担心,你不必学习新的编程语言。robots.txt指令的可用命令很少。事实上,只知道其中两个就足以满足大多数目的:

  • User-Agent  – 定义搜索引擎爬网程序
  • Disallow – 告知爬网程序远离定义的文件,页面或目录

如果您不打算为不同的抓取工具或搜索引擎设置不同的规则,可以使用星号(*)为所有规则定义通用指令。例如,要阻止整个网站中的所有人,您可以通过以下方式配置robots.txt:

1
2
User-agent: *
Disallow: /

这基本上说所有目录都是所有搜索引擎的禁区。

需要注意的是,该文件使用相对(而非绝对)路径。由于robots.txt位于根目录中,因此正斜杠表示禁止此位置及其包含的所有内容。要将单个目录(例如媒体文件夹)定义为禁止,您必须编写类似的内容

1
/wp-content/uploads/

。另请注意,路径区分大小写。

如果它对您有意义,您还可以允许和禁止您网站的某些部分用于某些机器人。例如,robots.txt中的以下代码只会让Google完全访问您的网站,同时保留其他人:

1
2
3
4
User-agent: Googlebot
Disallow:
User-agent: *
Disallow: /

请注意,必须在robots.txt文件的开头定义特定搜寻器的规则。之后,您可以

1
User-agent:*

为所有没有明确规则的蜘蛛包含一张外卡作为全能指令。

值得注意的蜘蛛名称包括:

  • Googlebot – Google网页
  • Googlebot-Image – Google图片
  • Googlebot-News – Google新闻
  • Bingbot – Bing
  • Yahoo! Slurp – 雅虎(名字很棒,Yahoo!)
  • Baiduspider – 百度网页
  • Baiduspider-image – 百度图片搜索
  • Baiduspider-video – 百度视频搜索
  • Baiduspider-news – 百度新闻搜索

更多信息可以在这里找到:

  • UserAgentString.com
  • User-Agents.org

再次,让我提醒您,谷歌,百度,必应等搜索引擎通常会尊重您文件中的指令,但并不是所有爬虫都会。

附加语法

Disallow和User-agent不是唯一可用的规则。这里还有一些:

  • Allow – 明确允许在服务器上抓取实体
  • Sitemap – 告知站点地图所在的抓取工具
  • Host – 为具有多个镜像的站点定义首选域
  • Crawl-delay – 设置搜索引擎在对服务器的请求之间应等待的时间间隔

我们先来谈谈Allow吧。一个常见的误解是,此规则用于告诉搜索引擎检查您的网站,因此对SEO原因很重要。因此,您会在一些robots.txt文件中找到以下内容:

1
2
User-agent: *
Allow: /

该指令是多余的。为什么?因为搜索引擎会将您网站上未明确禁止的所有内容视为公平对待。告诉他们您允许整个网站被抓取对此不会有变化。

相反,该Allow指令用于抵消Disallow。如果您想要阻止整个目录但让搜索引擎访问其中的一个或多个特定文件,这非常有用,如下所示:

1
2
3
User-agent: *
Allow: /my-directory/my-file.html
Disallow: /my-directory/

搜索引擎遇到my-directory时一般会远离,但仍然可以访问my-file.html。但是,重要的是要注意,您需要首先放置Allow指令才能使其正常工作。

一些爬虫支持Sitemap指令。您可以使用它告诉他们在哪里可以找到您网站的站点地图,它看起来像这样:

1
2
3
4
5
Sitemap: http://mysite.com/sitemap_index.xml
Sitemap: http://mysite.com/post-sitemap.xml
Sitemap: http://mysite.com/page-sitemap.xml
Sitemap: http://mysite.com/category-sitemap.xml
Sitemap: http://mysite.com/post_tag-sitemap.xml

该指令可以位于robots.txt文件中的任何位置。通常,网站所有者选择将其放在开头或结尾。然而,它的用处是值得商榷的。例如,Yoast对此有以下想法:

“我们一直觉得从robots.txt链接到你的XML站点地图有点无稽之谈。您应该手动将它们添加到Google和Bing网站站长工具中,并确保查看有关XML站点地图的反馈。“ –  Joost de Valk

这一点,百度即时这样做的。因此,由您决定是否将其添加到您的文件中。

Host和Crawl-delay是我个人从未使用过的两个指令。前者告诉搜索引擎,如果您的网站有多个镜像,那么您最喜欢哪个域名。后者设置爬虫在扫描之间应等待的秒数。

先进的东西

我们已经知道我们可以通过星号设置User-agent,其他指令也是如此。

例如,如果您想要阻止所有以wp-开头的访问权限的文件夹,您可以这样:

1
2
User-agent: *
Disallow: /wp-*/

有道理,不是吗?这同样适用于文件。例如,如果我的目标是排除我的媒体文件夹中的所有PDF文件显示在SERP中,我将使用此代码:

1
2
User-agent: *
Disallow: /wp-content/uploads/*/*/*.pdf

请注意,我替换了WordPress自动使用通配符设置的月份和日期目录,以确保无论何时上载它们都会捕获具有此结尾的所有文件。

虽然这种技术在大多数情况下都能很好地工作,但有时需要通过限制结尾而不是其开头来定义字符串。这是$符号通配符派上用场的地方:

1
2
User-agent: *
Disallow: /page.php$

上述规则确保仅page.php被阻止而不是被阻止page.php?id=12。$符号告诉搜索引擎page.php是字符串的最后一部分。整洁,对吧?

很好,但是我现在应该把什么放进我的robots.txt文件?!

shutterstock_189045062

我可以看到你变得不耐烦了。代码在哪里?是不是有一些优化的指令我可以在这里发布,你可以复制和粘贴,并完成这个主题?

尽管如此,很遗憾,答案是没有。

为什么?好吧,其中一个原因是你的robots.txt的内容真的取决于你的网站。你可能有几件事情,你宁愿远离其他人不关心的搜索引擎。

其次,更重要的是,就SEO而言,没有就最佳实践和设置robots.txt的最佳方法达成一致的标准。整个主题有点争论。

专家们正在做什么

例如,Yoast的人只在他们的robots.txt中有以下内容:

1
2
User-Agent: *
Disallow: /out/

正如你所看到的,他们唯一不允许的是他们的“out”目录,它包含他们的联盟链接。其他一切都是公平的。原因是这样的:

“谷歌不再是一个愚蠢的小孩,它只会抓取您的网站HTML并忽略您的样式和JavaScript。它可以获取所有内容并完全呈现您的页面。这意味着,当您拒绝Google访问您的CSS或JavaScript文件时,谷歌根本不喜欢它们。“ – Yoast

到目前为止,Google会将您的网站视为一个整体。如果您阻止样式组件,它会认为您的网站看起来像垃圾,并以破坏性的影响惩罚您。

Yoast还强烈建议不要使用robots.txt指令来隐藏类别,日期和其他档案等低质量内容,而是使用noindex, follow这样的meta标签。另请注意,由于上述原因,其文件中没有引用站点地图。

WordPress的创始人Matt Mullenweg采取了类似的简约方法:

1
2
3
4
5
6
7
8
9
10
11
User-agent: *
Disallow:

User-agent: Mediapartners-Google*
Disallow:

User-agent: *
Disallow: /dropbox
Disallow: /contact
Disallow: /blog/wp-login.php
Disallow: /blog/wp-admin

您可以看到他只阻止他的Dropbox和联系人文件夹以及WordPress的重要管理员和登录文件和文件夹。虽然有些人出于安全原因而执行后者,但隐藏wp-admin文件夹是Yoast实际建议的。

我们的下一个例子来自WPBeginner:

1
2
3
4
5
6
7
8
9
10
11
User-Agent: *
Allow: /?display=wide
Allow: /wp-content/uploads/
Disallow: /wp-content/plugins/
Disallow: /readme.html
Disallow: /refer/

Sitemap: http://www.wpbeginner.com/post-sitemap.xml
Sitemap: http://www.wpbeginner.com/page-sitemap.xml
Sitemap: http://www.wpbeginner.com/deals-sitemap.xml
Sitemap: http://www.wpbeginner.com/hosting-sitemap.xml

您可以看到他们阻止了他们的联盟链接(请参阅“refer”文件夹)以及插件和readme.html文件。正如本文所解释的那样,后者恰好避免了针对某些版本的WordPress的恶意查询。通过禁止该文件,您可能能够保护自己免受大规模攻击。

阻止插件文件夹也旨在防止黑客通过易受攻击的插件。在这里,他们采取了不同于Yoast的方法,Yoast不久前改变了这一点,因此插件文件夹中的样式不会丢失。

WPBeginner与其他两个示例的不同之处在于将wp-content/uploads明确设置为“allow”,即使它没有被任何其他指令阻止。他们声明这是为了让所有搜索引擎都在搜索中包含此文件夹。

但是,我并没有真正看到这一点,因为搜索引擎的默认方法是索引他们可以获得的所有东西。因此,我不认为允许他们专门抓取某些内容会有所帮助。

最后的总结

从搜索引擎优化的角度来看,尽可能多地提供内容是有意义的,这样他们就能够了解您的网站。但是,如果您希望自己保留部分内容(例如会员链接),请根据需要禁用这些部分。

这也与WordPress Codex中的相关部分密切相关:

“向robots.txt添加条目以帮助SEO是一种流行的误解。谷歌表示,欢迎您使用robots.txt来阻止您网站的部分内容,但现在更希望您不这样做。请改用页面级noindex标记来处理网站的低质量部分。自2009年以来,谷歌一直致力于避免阻止JS和CSS文件的建议,谷歌的搜索质量团队一直积极推动网站管理员的透明政策,以帮助谷歌验证我们没有“隐藏”或链接阻止页面上的难看垃圾邮件。因此,理想的机器人文件不允许任何内容,并且如果构建了准确的机器人文件,则可以链接到XML站点地图(尽管这本身很少见!)。

WordPress默认只会阻止几个JS文件,但几乎符合Google的指导。“

很清楚,不是吗?请注意,如果您决定链接到站点地图,您也应该直接通过他们的网站管理员套件将其提交给搜索引擎。

无论您决定做什么,都不要忘记测试您的站点地图!这可以通过以下方式完成:

  • 转到yoursite.com/robots.txt查看是否显示
  • 通过测试工具运行它以查找语法错误(例如此错误)
  • 获取并渲染以检查是否看到了您希望他们看到的内容
  • 请留意网站站长工具可能出现的错误消息

简而言之,为您的网站设置robots.txt文件是搜索引擎优化中一个重要且经常被忽视的步骤。告诉网站抓取工具您要对网站的哪些部分进行索引以及单独留下哪些部分,这有助于您将不必要的内容从搜索引擎结果中删除。

另一方面,正如我们所看到的,阻止Google过多的网站会严重损害其在SERP中的表现。

虽然在过去禁止访问大量文件夹和文件是合适的,但今天趋势更倾向于设置最低限度的robots.txt。

配置文件时,请务必对其进行彻底测试,以免对您造成太大伤害。

说点什么

500