【问题标题】:What happens when GET robots.txt returns an unrelated html file?当 GET robots.txt 返回一个不相关的 html 文件时会发生什么?
【发布时间】:2015-07-23 10:19:56
【问题描述】:

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

  • GET /img/exists.png -> exists.png
  • GET /img/inexistent.png -> index.html

这也意味着:

GET /robots.txt -> index.html

谷歌(和其他)抓取工具将如何处理这个问题?他们会检测到 robots.txt 无效并忽略它(与返回 404 相同)吗?或者他们会因为提供无效的 robots.txt 而对我的排名进行处罚?这是可以接受的,还是我应该在我服务的应用没有 robots.txt 的情况下返回 404?

【问题讨论】:

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

标签: robots.txt google-crawlers


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-07
    • 2018-12-21
    • 2015-10-29
    相关资源
    最近更新 更多