几年来,我好几次碰到一个有趣的robots.txt问题,这对网站所有者来说可能很难弄清楚。在提出这个问题并与客户讨论如何解决这个问题之后,我发现很多人根本没有意识到它会发生。由于它涉及到网站的robots.txt文件,它可能会在搜索方面产生重大影响。
我指的是robots.txt文件被子域和协议处理。换句话说,一个站点可以同时运行多个robots.txt文件,它们分别位于www和非www,或者按照协议运行在https www和http www上。由于谷歌分别处理这些问题,您可以发送非常不同的关于如何抓取(或不抓取)站点的指令。
在这篇文章中,我将介绍遇到这个问题的两个真实站点示例,我将介绍谷歌的robots.txt文档,解释如何检测这种情况,并在帮助客户处理这种情况的基础上提供一些技巧。
让我们爬起来,我的意思是移动。:)
txt的子域和协议
我前面已经提到,谷歌通过子域和协议处理robots.txt文件。例如,一个站点可以有一个robots.txt文件放在非www版本上,而一个完全不同的文件放在www版本上。这些年来,我在帮助客户的时候看到过好几次这种情况,最近我又一次发现了这种情况。
除了www和非www之外,站点还可以在子域名的https版本和http版本上分别放置robots.txt文件。因此,与我上面解释的类似,可能存在多个robots.txt文件,它们根据协议具有不同的指令。
谷歌的文档清楚地解释了它是如何处理robots.txt文件的,我建议您阅读该文档。下面是一些例子,他们提供了如何应用robots.txt指令:
这显然会导致问题,因为Googlebot可能会为同一站点获取不同的robots.txt文件,并以不同的方式抓取该站点的每个版本。当网站所有者错误地认为Googlebot通过robots.txt文件执行了一组指令时,它可能会做一些有趣的事情,而在其他爬行过程中,它也会运行第二组指令。
下面我将介绍遇到这种情况的两种情况。
案例研究1:不同的robots.txt文件在www和非www上有冲突的指令
最近在一个发布网站上执行爬网分析和审计时,我注意到一些被robots.txt屏蔽的页面实际上正在被爬网和索引。我知道谷歌100%服从robots.txt的爬行指令,所以这显然是一个危险信号。
澄清一下,我指的是正常抓取和索引的url,即使robots.txt指令应该禁止抓取。谷歌仍然可以索引被robots.txt阻止的url,而不需要真正爬行它们。我稍后会详细介绍这种情况。
在手动检查站点的robots.txt文件时,我看到了非www版本上的一组指令,这些指令很有限。然后我开始手动检查网站的其他版本(根据子域和协议),看看是否有任何问题。
就这样,一个不同的robots.txt文件在www版本的网站上。你可以猜到,它包含了不同于非www版本的指令。
robots.txt文件的非www版本:
robots.txt文件的www版本:
该网站没有正确地将robots.txt文件的www版本重定向到非www版本。因此,谷歌能够访问两个robots.txt文件并找到两组不同的爬行指令。再说一次,我知道很多网站所有者并没有意识到这种情况会发生。
一个关于被robots.txt阻止的可以编入索引的页面的快速说明
我前面提到,被robots.txt正确拦截的页面仍然可以编入索引。它们不会被爬动。谷歌已经解释过很多次了,你可以在它的robots.txt文档中阅读更多关于谷歌如何索引机器人url的信息。我知道这对许多网站所有者来说是一个令人困惑的问题,但是谷歌仍然可以索引那些不被允许的页面。例如,当谷歌看到指向那些被阻止页面的入站链接时,它可以这样做。
当这种情况发生时,它将为url建立索引,并在serp中提供一条消息,说“此页面不能提供任何信息”。再说一遍,这不是我在这篇文章中要提到的。我指的url正在爬行和索引基于谷歌看到多个版本的robots.txt文件。下面是谷歌文档中关于机器人url被索引的截图。
那么谷歌搜索控制台(GSC)和robots.txt文件呢?
在谷歌搜索控制台的一个遥远地区,尘土飞扬的空气中飘动着搜索风滚草,网站所有者在调试robots.txt文件时可以使用一个很好的工具。它叫做robots.txt Tester,它是其中之一