平衡 Google 索引与基于组的搜索限制

我们已将 Discourse 论坛的结构设置为严格通过群组控制类别可见性。我们的目标是为登录用户创造一个有组织、个性化的体验,同时确保公共内容出于 SEO 目的仍然可访问。我们当前的设置包括:

:check_mark: 基于群组的访问 – 用户必须加入群组才能查看特定类别。
:check_mark: 跟踪的类别 – 加入群组后,用户会自动跟踪其关联的类别。
:check_mark: 静音类别的行为 – 静音的类别应默认折叠。
:check_mark: 搜索权限 – 登录用户只能看到他们有权访问的类别的搜索结果。
:check_mark: SEO 的公共可见性 – 未登录的访问者(包括 Google 爬虫)应能够查看所有类别并对其进行索引。
:check_mark: 入职要求 – 新用户必须在参与之前选择一个群组。

我们面临的挑战

:small_blue_diamond: 1. 基于群组的类别可见性未按预期工作

  • 当用户加入群组时,预期行为是群组的类别应显示在主页和类别页面上。
  • 但是,这不会立即发生——有时类别根本不显示,或者仅在向下滚动后才显示。
  • 较早创建的类别(例如“验血师”)行为正常,而新创建的类别(例如“法警”)显示需要更长时间或直到手动触发才出现。
  • 用户经常只看到静音的类别,而不是预期的跟踪/关注的类别。
  • 临时修复:如果用户手动取消静音至少一个类别,其他已加入的类别将开始正确显示。

:small_blue_diamond: 2. 搜索结果显示不相关类别

  • 登录用户正在看到他们无权访问的类别的搜索结果。
  • 预期行为:Discourse 应将搜索结果限制为仅用户所属群组的类别。
  • 观察到的行为:搜索仍然返回所有类别的结果,这意味着用户可以看到他们技术上不应访问的内容片段。
  • 相关讨论:在 ask[.]discourse[.]com 上的讨论证实,Discourse 应该根据群组权限限制搜索结果。

:small_blue_diamond: 3. SEO 与 Google 爬虫 vs. 限制访问

  • 我们希望所有类别都能被 Google 索引,以便内容可以在搜索结果中被发现。
  • 但是,我们不希望登录用户默认看到所有类别——只希望他们看到与其所选群组关联的类别。
  • 当前问题:如果我们隐藏某个类别不让登录用户看到,它也会从 Google 中消失,导致无法索引。
  • 理想解决方案:Google 应该能够抓取和索引所有类别,但登录用户的搜索结果仍应根据群组权限进行限制。

向社区提问

:one: 如何确保已加入的类别立即显示在静音类别之上?
:two: 如何在完全强制执行登录用户的搜索结果限制的同时,保持内容对 SEO 可见?
:three: 是否有办法允许 Google 索引所有公共类别,同时仍然对登录用户隐藏它们,直到他们加入群组?
:four: 在不阻止公共读者发现内容的情况下,强制在注册时选择群组的最佳方法是什么?

相关讨论与参考资料

:pushpin: 基于群组的类别访问未按预期工作 – 关于类别可见性延迟、静音类别覆盖跟踪设置以及搜索行为问题的讨论。

:pushpin: [搜索结果受群组权限限制 (ask[.]discourse[.]com)] – 确认 Discourse 根据群组权限限制搜索结果,但我们需要一种方法来平衡这一点与 SEO。

:pushpin: 问题视频演示:

静音不是一种限制。因为您必须使用 everyone 来向随机用户和 Google 展示内容,然后您的所有用户都可以访问所有这些类别,无论是否静音,他们都会看到正确的搜索结果。

如果您确实在使用群组限制,同时阻止未登录的访客和 Google 访问这些受限制的类别,那么就存在一个错误。但我对此表示怀疑,因为它在这里(以及在我的论坛上)是有效的。

所以我的猜测是您正在使用 everyone 进行读取。

感谢 @Jagster 的回复,我正在与 @emonunix 一起处理这个问题。

这是我们试图完成的目标:

  • 我们希望授予用户访问权限,让他们能够访问离散的组/组,并访问类别
  • 我们希望隐藏不在这些组/组中的所有类别
  • 我们希望 Google 索引所有内容(所有类别)

目前,我们使用“静音”作为一种方法来隐藏用户访问网站时的类别。他们必须加入一个组才能访问类别。

现在有趣的部分是,他们只知道他们组中的一组类别……他们看不到任何其他类别(因为它们被静音了)。

然后他们开始搜索,理论上是在搜索他们有权访问的类别中的内容,突然他们看到了大量他们从未想过的类别中的内容……这让他们感到困惑。

有什么方法可以实现这一点吗?

1 个赞

同时,每个用户都可以访问所有这些类别,并在搜索结果中看到它们。

也许您可以使用插件或其他方式打破那个基础安全规则,但开箱即用地允许某些东西对所有人开放,同时又意味着某些东西并非对所有人开放,这是不可能的。

Right @Jagster 确切地说,这就是我们询问的原因。我们不知道是否有其他方法。

理想情况下,应该有一种方法可以将登录用户限制为在 X 上查看和搜索,而未登录用户(例如 Google)可以查看和访问 Y。

或者,也许这很简单,就是让已静音的类别在搜索工具中无法访问……或者也许这只是一个设计上的疏忽?奇怪的是,有些东西在你看来被静音了,但你却可以通过搜索找到它……这就像一条后门。

Muted 意味着它已静音,不会出现在 /latest 中。它并未被屏蔽。要隐藏内容,您必须使用群组,然后您就可以将 Google 排除在外。也应该这样做,因为在那时该内容不再是免费的。

当您的注册用户搜索并从 Google 找到某些内容,点击它并进入您的论坛时,您将处于一个有趣的位置——但是在受限类别中。届时您会怎么做:

  • 强制订阅
  • 强制退出并像陌生人一样阅读
  • 显示错误 403

我仍然不明白您计划对登录用户屏蔽内容,但却向随机用户显示所有内容。这就像您会宣传您拥有的东西,但如果用户没有选择正确,他们就得不到——或者他们必须退出。大多数网站的做法恰恰相反 :smirking_face:

但是不。静音不是屏蔽。