全局禁用所有 RSS 源的方法

您好,

在对我们的网站进行 SEO 审计时(其中一部分运行在 Discourse 上),我们发现 Googlebot 在 RSS 源上花费了大量的爬取预算。尽管 Discourse 的默认 robots.txt 文件已禁止这些 URL,并且这些 RSS 源的 HTTP 响应中已发送了 noindex 头,但情况依然如此。

我想知道是否有非“取巧”的方法可以完全禁用我网站上的这些 RSS 源。我怀疑很少有人使用它们(我会尝试确认这一点)。但我的问题依然存在。

感谢您的任何帮助!

–Hugh

1 个赞

目前无法通过复选框禁用这些源。

如果您熟悉 nginx,可以编写一个匹配 .rss 的位置块,返回 404 状态码,并将其放入相应的 app.yml 部分。

1 个赞

发送 404 错误对 SEO 的影响难道不会更糟糕吗?

2 个赞

为什么不使用 nginx 来阻止它们?

Google 是否真的在抓取这些页面,还是这些 URL 仅仅出现在 Google Search Console 中,显示为“已索引但被 robots.txt 阻止”?

我没有在 RSS 源中看到 noindex 标头,但如果 URL 被 robots.txt 阻止且包含 robots 标头,爬虫可能永远无法看到该 robots 标头。

[我移除了 curl -I 的输出,因为它没有使用 GET 请求,因此缺少 robots 标头。]

编辑: 我刚刚使用 GET 请求检查了 RSS 源,因为我以为 x-robots-noindex 标头存在于 RSS 源中,它确实存在,但仅在使用 GET 请求时出现。

现在我想起我在主论坛上做过的事情。Google Search Console 曾警告 RSS URL 被索引但被阻止,因此我通过 robots.txt 取消了对这些源的阻止,因为这可以防止 Googlebot 抓取这些 URL 并看到 noindex 标头。我相信这将解决这些警告,但我不知道这是否能阻止 Googlebot 抓取这些 URL。

# Disallow: /t/*/*.rss
# Disallow: /c/*.rss

我有点担心告诉爬虫存在 RSS 源(通过 link,见下文),但当爬虫尝试抓取这些 URL 时却返回 404 错误。这可能会导致机器认为网站存在技术问题,从而降低其质量评分(无论搜索引擎如何确定质量或判断网站是否对用户不可用)。

$ curl -s https://meta.discourse.org/latest | grep -i rss    
    <link rel="alternate" type="application/rss+xml" title="Latest posts" href="https://meta.discourse.org/posts.rss" />
    <link rel="alternate" type="application/rss+xml" title="Latest topics" href="https://meta.discourse.org/latest.rss" />
   ...
1 个赞

是的,我不喜欢 404 解决方案。这似乎会给谷歌发出不良信号,而且也是实现我目标的过于粗暴的方式。我真正想要的是链接不在页面上,而不是让链接变成死链。

关于你的问题,在搜索控制台中,RSS 源显示为“被 ‘noindex’ 标签排除”。目前尚不清楚这意味着谷歌花费时间抓取了它们然后将其排除,还是它们在抓取前就被排除了;如果是后者,对爬虫预算的影响可能较小。

nginx 日志 中可能会有关于他们正在抓取多少个 RSS URL 的信息。我刚刚检查了自己的日志,发现 Googlebot 正在抓取 RSS 源,但这正是我要求的,因为我已经从 robots.txt 中解除了对他们的限制。