当GET robots.txt返回一个不相关的html文件时会发生什么?

当GET robots.txt返回一个不相关的html文件时会发生什么?,robots.txt,google-crawlers,Robots.txt,Google Crawlers,我有一个web服务器,能够为各种web应用程序的资产提供服务。当请求的资产不存在时,它会发回index.html。换言之: 获取/img/exists.png->exists.png GET/img/inexistent.png->index.html 这也意味着: GET/robots.txt->index.html 谷歌(和其他)爬虫将如何处理这个问题?他们是否会检测到robots.txt无效并忽略它(与返回404相同)?或者他们会因为我为一个无效的robots.txt服务而惩罚我的排名

我有一个web服务器,能够为各种web应用程序的资产提供服务。当请求的资产不存在时,它会发回index.html。换言之:

  • 获取/img/exists.png->exists.png
  • GET/img/inexistent.png->index.html
这也意味着:

GET/robots.txt->index.html


谷歌(和其他)爬虫将如何处理这个问题?他们是否会检测到robots.txt无效并忽略它(与返回404相同)?或者他们会因为我为一个无效的robots.txt服务而惩罚我的排名吗?这是可接受的,还是当我提供的应用程序没有robots.txt时,我应该重点返回404?

我所知道的每个robots.txt处理程序都通过简单地丢弃无效行来处理无效行。因此,HTML文件(可能不包含任何有效的robots.txt指令)将被有效地视为空白文件。不过,这并不是任何官方标准的一部分。假设任何robots.txt文件都将包含robot.txt指令。未定义包含HTML的robots.txt文件的行为


如果您关心爬虫,那么更大的问题不是您提供了一个无效的robot.txt文件,而是您没有机制在资源不存在时告诉爬虫(或任何其他人)。从爬虫的角度来看,您的站点将包含一些普通页面以及无限多个主页的精确副本。我强烈建议您设法更改设置,以便不存在的资源返回状态404。

当资源不存在时,为什么不返回状态404?这是你自己的选择,还是出于你无法控制的原因而坚持使用它?@plasticinest最初,它是为了支持单页应用程序。因此,除了资产之外的任何东西都有可能成为应用程序某个部分的路径。如果您请求/home,它将提供index.html并显示主视图。如果您请求/about,它将提供index.html并显示about视图。我们不想列出一个详尽的路由列表,因为它实际上是一个通用服务器,能够为任何应用提供服务。。。(和往常一样,这个问题的stackoverflow版本被简化了)我们正在为此开发一个更好的模式,但现在这是我们所拥有的,它必须工作。。。