您好,
在对我们的网站进行 SEO 审计时(其中一部分运行在 Discourse 上),我们发现 Googlebot 在 RSS 源上花费了大量的爬取预算。尽管 Discourse 的默认 robots.txt 文件已禁止这些 URL,并且这些 RSS 源的 HTTP 响应中已发送了 noindex 头,但情况依然如此。
我想知道是否有非“取巧”的方法可以完全禁用我网站上的这些 RSS 源。我怀疑很少有人使用它们(我会尝试确认这一点)。但我的问题依然存在。
感谢您的任何帮助!
–Hugh
您好,
在对我们的网站进行 SEO 审计时(其中一部分运行在 Discourse 上),我们发现 Googlebot 在 RSS 源上花费了大量的爬取预算。尽管 Discourse 的默认 robots.txt 文件已禁止这些 URL,并且这些 RSS 源的 HTTP 响应中已发送了 noindex 头,但情况依然如此。
我想知道是否有非“取巧”的方法可以完全禁用我网站上的这些 RSS 源。我怀疑很少有人使用它们(我会尝试确认这一点)。但我的问题依然存在。
感谢您的任何帮助!
–Hugh
目前无法通过复选框禁用这些源。
如果您熟悉 nginx,可以编写一个匹配 .rss 的位置块,返回 404 状态码,并将其放入相应的 app.yml 部分。
发送 404 错误对 SEO 的影响难道不会更糟糕吗?
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" />
...
是的,我不喜欢 404 解决方案。这似乎会给谷歌发出不良信号,而且也是实现我目标的过于粗暴的方式。我真正想要的是链接不在页面上,而不是让链接变成死链。
关于你的问题,在搜索控制台中,RSS 源显示为“被 ‘noindex’ 标签排除”。目前尚不清楚这意味着谷歌花费时间抓取了它们然后将其排除,还是它们在抓取前就被排除了;如果是后者,对爬虫预算的影响可能较小。
在 nginx 日志 中可能会有关于他们正在抓取多少个 RSS URL 的信息。我刚刚检查了自己的日志,发现 Googlebot 正在抓取 RSS 源,但这正是我要求的,因为我已经从 robots.txt 中解除了对他们的限制。