ecki
(Bernd)
1
我们使用 RSS 插件(或手动复制)来发布博客文章,并在一个类别中创建讨论锚点。Google 不喜欢这种“复制”的内容,并威胁要损害博客的 SEO 声誉。
当然,我们可以阻止 Google 索引 discourse(或该类别),但有没有人有过经验,可以以某种方式定义这是故意的。比如“这个子域名属于博客,我们不尝试建立链接农场”之类的?如果有,如何在 discourse 设置中实现?
我大概记得,使用 rel=nofollow 或类似的标签至少可以解决反向链接农场的问题(不确定内容重复的问题)。有没有一个“这是副本”的标头可以安抚 Google?
2 个赞
simon
2
embed set canonical url 站点设置可能有助于解决此问题:
不过,值得查看 Google 的文档:
我链接到文档的原因是,我不确定在启用 embed truncate 设置时启用 embed set canonical url 设置的情况。当启用 embed truncate 时,Google 在 Discourse 上实际只能抓取到原始文章的片段。如果用户点击“显示完整帖子”按钮,完整文章将在 iframe 中显示。我很确定 iframe 内容不会被 Google 抓取。“5 个常见错误”文章中的第一点似乎解决了这个问题。
2 个赞
ecki
(Bernd)
3
感谢Simon的提示!确实,规范链接(canonical)似乎正是我想要的。我试了一下,但它并没有完全奏效,它嵌入了一个指向自身的规范URL,而不是RSS源:
<link rel="canonical" href="https://community.domain.com/t/invoicing-mandate/537?page=0" />
而不是
<link rel="canonical" href="https://blog.domain.com/t/invoicing-mandate/537" />
(这是 stable/3.2.0)
另外,这个是否应该也被设置为特色链接(featured link)?
在我们的例子中,我们不使用截断(truncate)(尽管RSS Feed已经被截断了)。但我希望Google仍然会接受它。
1 个赞
simon
4
尝试查看页面源代码,而不是使用浏览器的网页检查器查看。我认为您会看到,当您查看页面的源代码时,规范 URL 被设置为 RSS 帖子的 URL,而当您使用网页检查器查看 HTML 时,它被设置为 Discourse 主题的 URL。如果这是正确的,您应该不会收到有关 RSS 主题的重复内容警告。
这是我在使用网页检查器查看从 Discourse RSS feed 拉入的主题时看到的内容(启用了 embed set canonical url):
这是我在查看页面源代码时看到的规范 URL(通过右键单击页面并从菜单中选择“查看页面源代码”):
<link rel="canonical" href="https://blog.discourse.org/2023/03/how-discourse-scaled-to-10m-arr-with-only-1-salesperson" />
带有正确设置的规范 URL 的查看页面源代码版本是爬虫将看到的内容。
另一种查看差异的方法是使用网页检查器,但选择 Googlebot 作为用户代理:
我认为该设置在爬虫看到的方面符合预期,但它让我感到困惑。问题似乎是 Discourse 在查看启用了 JavaScript 的页面时,会使用 JavaScript 覆盖规范 URL 属性。供参考,这发生在:
https://github.com/discourse/discourse/blob/main/app/assets/javascripts/discourse/app/instance-initializers/meta-tag-updater.js#L25-L27
我认为(目前)无法为从 RSS feed 创建的主题设置特色链接。我不是 SEO 专家,但我不认为设置或不设置它会对 SEO 产生任何影响。
2 个赞
ecki
(Bernd)
5
我使用了 curl -i | grep canon 并看到了一个错误的标签 URL(没有标头),但我可以尝试使用不同的 UA 再次尝试(这有点奇怪),- 我不得不重新创建了帖子几次,所以也许我感到困惑。我会在此处更新。
确实,精选链接不是为了 SEO,但我的内部愿望是让博客链接更加可见。而且由于它是相同的 URL……
(但看起来我得到了一长串要求,所以我可能需要分叉 rss-poll(不幸的是,看起来大部分工作不是在插件中完成的)。嵌入代码是否也可以扩展?
simon
6
对于从 RSS feed 创建的主题,并启用了 embed set canonical url,我期望 curl -i 返回 RSS item 的 URL 作为规范 URL。在我本地站点测试时,这可以正常工作。
假设您可以访问 Discourse 的 Rails 控制台,您可以通过查找主题,然后检查其 topic_embed 属性来确认正在发生什么。例如:
t = Topic.find 495
t.topic_embed
或者仅仅是:
TopicEmbed.find_by(topic_id: 495)
应该会返回一个 TopicEmbed。它的 embed_url 是 Discourse 用来设置主题规范 URL 的预期值。
我自己也曾对此感到好奇。这比修改 RSS 插件要困难,因为嵌入是 Discourse 核心代码的一部分。