【问题标题】:robots.txt and disalowing absolute path URLrobots.txt 并禁止绝对路径 URL
【发布时间】:2018-07-31 18:11:32
【问题描述】:

我正在使用 Heroku 管道。所以当我推送我的应用程序时,它会被推送到暂存应用程序

https://appname.herokuapp.com/

如果一切正确,我会将该应用推广到生产。没有新的构建过程。它与第一次为 staging 构建的应用程序相同。

https://appname.com/

问题是这会导致重复内容出现问题。站点是彼此的克隆。完全相同的。我想从 Google 索引和搜索引擎中排除暂存应用程序。

我想到的一种方法是使用 robots.txt 文件。

为了让它工作,我应该这样写

User-agent: *
Disallow: https://appname.herokuapp.com/

使用绝对路径,因为此文件将在服务器上在暂存和生产应用程序中,我只想从 Google 索引中删除暂存应用程序,而不是触及生产应用程序。

这是正确的做法吗?

【问题讨论】:

  • 为什么这被否决了?

标签: heroku seo robots.txt noindex


【解决方案1】:

不,Disallow 字段不能获取完整的 URL 引用。您的 robots.txt 会屏蔽以下网址:

  • https://example.com/https://appname.herokuapp.com/
  • https://example.com/https://appname.herokuapp.com/foo

Disallow 值始终代表URL 路径的开始

要阻止https://appname.herokuapp.com/ 下的所有网址,您需要:

Disallow: /

因此您必须为https://appname.herokuapp.com/https://appname.com/ 使用不同的robots.txt 文件。

如果您不介意机器人抓取 https://appname.herokuapp.com/,您可以改用 noindex。但这也需要两个站点的不同行为。不需要不同行为的替代方法是使用canonical。这会向爬虫传达哪个 URL 是首选的索引。

<!-- on https://appname.herokuapp.com/foobar -->
<link rel="canonical" href="https://appname.com/foobar" />
<!-- on https://appname.com/foobar -->
<link rel="canonical" href="https://appname.com/foobar" />

【讨论】:

  • 感谢 unor。这也是我的结论。要阻止一个站点而不是另一个站点,唯一的选择是规范的,但是由于它们是彼此的克隆,这意味着正如您所说的那样,它们都将具有规范的标签。 appname.com 是否可以拥有也适用于 appname.com 的规范?我还需要一个 cacnonical 的主机名还是我的应用程序中的每个路由一个主机名?
  • @Igor-Vuk:是的,自我参照canonicalis fine。而且您需要在每个页面上指定它,而不仅仅是主页(这就是我的示例使用/foobar 的原因)。 --- 请注意,您可能还可以找到提供不同 robots.txt 文件的解决方案,因此它不一定是唯一的解决方案。另请注意,canonical 不会阻止
  • 如果它不阻止它意味着谷歌仍然会对其进行搜索和索引,对吗?我不确定如何提供两个不同的 robots.txt 文件,因为无论一个有什么暂存文件,生产文件也有。
  • @Igor-Vuk:是的,搜索引擎仍然可以抓取(否则他们无法了解非规范 URL 的规范 URL 是什么)并索引非规范 URL(如果他们认为您的规范陈述是错误的,或者出于任何原因)。
【解决方案2】:

不,使用您的建议会阻止所有搜索引擎/机器人访问https://appname.herokuapp.com/

您应该使用的是:

User-agent: Googlebot
Disallow: /

这只会阻止Googlebot 访问https://appname.herokuapp.com/。请记住,机器人可以忽略robots.txt 文件,这更像是。但 Google 会遵照您的要求。

编辑

在看到 unor 的建议后,无法通过 URL 禁止,所以我从我的答案中改变了这一点。但是,您可以按特定文件阻止,例如/appname/ 或您使用 / 阻止 Googlebot 访问任何内容。

【讨论】:

  • 投反对票。认为你还没有理解 OP 的问题。 OP 将使用相同的内容(包括 robots.txt)进行登台和生产。因此,拥有Disallow: / 也会阻止产品上的所有内容。不是一个选择。当(如果)答案更新时,将再次投票。
猜你喜欢
  • 2011-04-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-27
  • 2021-10-18
  • 2010-10-03
相关资源
最近更新 更多