我想知道是否有办法从 Discourse 论坛中完全删除规范链接。
我指的是用户向下滚动页面时,每个主题 URL 都会出现的 /2、/3、/3 等后缀。我希望每个主题内的回复都只指向原始 URL(不将访问者重定向到原始 URL,而是完全删除这些路径,使它们不存在)。
起初,我认为这是 Discourse 的一个很酷的功能,但过去一年我在我的网站上运行了一个类似的论坛,使用的是 NodeBB(它对每个回复都使用相同的规范链接功能),我们发现这种功能对公共论坛的 SEO 来说可能是灾难性的。
为什么? 因为即使这些 /2、/3、/4 URL 是规范链接,Google 最终也会抓取并索引所有这些 URL。这意味着主题内的每一个新回复都可能出现在 Google 搜索结果中,而且由于它们基本上是原始主题 URL 的重复版本,这些额外的索引页面很少获得访问量,即使有,访问者在网站上停留的时间也不会超过几秒钟。
当 Google 索引大量额外页面而这些页面又没有多少活动时,它会告诉 Google 整个域名包含很多低质量 URL,这会损害整个域名的健康(就像我们遇到的情况一样)。自推出公共论坛以来,我们损失了大约 40% 的流量,一个很大的促成因素就是这些额外的 URL(在 12 个月内,仅仅因为每个主题中的回复,我们的站点地图就增加了超过 30,000 个低质量 URL)。
现在,如果你运行的是一个私有论坛,这一切都无关紧要,因为私有论坛根本不受益于任何 SEO,因为整个论坛都隐藏在互联网之外。但如果你确实想运行一个公共论坛,并且你的目标是获取自然搜索流量,那么这些额外的 URL 字符串可能会对你网站的整体健康产生巨大的负面影响。
所以,我想知道,是否有任何可行的方法可以调整设置或创建插件,让 Discourse 论坛不在每个主题内的回复中创建这些额外的 URL?
我正在考虑将我们的论坛从 NodeBB 迁移到 Discourse,但这只有在我们能让 Discourse 论坛不创建这些额外 URL 的情况下才有意义。
3 个赞
这之前也出现过一点:Google indexing same page multiple times: Issue with canonicals
你是如何确定这是重要原因的?这里发布的许多 SEO 帖子都相当推测性,所以一些证据很有帮助!
我没有使用过这个插件的经验,也无法亲自担保它,但之前有人尝试过用一个插件完全禁用规范链接:Remove Canonical Link Plugin
7 个赞
Falco
(Falco)
5
值得注意的是,我们已将向这些页面的响应负载添加 X-Robots-Tag: noindex 标头纳入了路线图。
10 个赞
很高兴知道。这听起来是朝着正确方向迈出的一大步。
就我而言,我们实际上在我们当前的论坛(在其仍公开时)中看到了一些实例,我们将 robots.txt 文件添加到了论坛的某些子文件夹中,而 Google 仍然在抓取它们。我认为这是非常不寻常的……但我们发现,在某些情况下,Google 不会遵循此指令。要 100% 确保页面不被索引,唯一的方法是让页面隐藏在登录屏幕后面,或者让页面根本不存在。
从外部人士的角度来看,告诉 Discourse不要为每个回复执行创建这些附加 URL 的额外操作似乎很简单。这样软件的工作量就会减少,复杂性也会降低,不是吗?
如果能在管理员设置中提供一个功能来完全关闭这些额外的 URL,那就太好了。
1 个赞
Falco
(Falco)
7
是的,这样我们就可以使用 header 标签,而不是将它们放入 robots.txt 文件中。
3 个赞
RGJ
(Richard - Communiteq)
8
我不太确定这里发生了什么。
因为 Discourse 正在做前者:它确实为 20 条回复的组创建了 ?page=X 规范 URL 元标签。正如您在此处所看到的,帖子编号从未添加到站点地图 URL 中,只有 ?page=X URL 被添加了。
所以我想告诉你没有问题。
但随后我搜索了一个有很多回复的主题,虽然搜索结果的第 2 页充满了 ?page=X 链接,但一些热门结果实际上链接到了那些编号的回复。
但为什么会发生这种情况?该页面确实有一个正确的规范 URL。
rgj@labgate:~$ wget -q -O - "https://meta.discourse.org/t/babble-a-chat-plugin/87297/418"|grep -e "<title" -e canonical
<title>Babble - A Chat Plugin - #418 by HAWK - broken-plugin - Discourse Meta</title>
<link rel="canonical" href="https://meta.discourse.org/t/babble-a-chat-plugin/87297?page=20" />
3 个赞
pfaffman
(Jay Pfaffman)
9
我不知道。
我猜测是因为那些链接在其他地方也出现了,所以那些才是被索引的链接?
1 个赞
RGJ
(Richard - Communiteq)
10
Canonical是为了防止这种情况发生。至少——理论上是这样。
4 个赞
Falco
(Falco)
11
我在这里与一个使用 Discourse 的巴西博客社区进行了深入的讨论,这促使我尝试这种新方法,即为那些特定帖子的页面发送 noindex 标头。我应该能在下周清理并合并该 PR,然后我们就可以开始进行实验了。
7 个赞
但为什么会发生这种情况?那个页面确实有一个正确的规范网址。
确实如此。它不应该发生(理论上),但它确实发生了,正如我们在我们的网站上所经历的那样,它确实会对域名的健康分数造成损害,这最终会对整个域名的搜索排名产生巨大的负面影响。
关于 @pfaffman 所说的:
我大胆猜测是那些链接出现在其他地方,所以那些会被索引?
我也会这么想……但我们看到,我们网站上成千上万的这些单独回复被谷歌索引了,尽管没有任何东西链接到它们。这很奇怪,我无法假装理解为什么/如何发生这种情况,但它强调了论坛管理员需要有能力简单地关闭每个回复的这些 /2、/3、/4 等 URL,如果他们愿意的话。
我很好奇,让 Discourse 具备这种能力是否困难? 从我这个非程序员的角度来看,这似乎应该很容易,因为它只是告诉软件不要做那么多工作……但也许有我无法理解的更深层原因?
2 个赞
j127
13
我不确定,但对这些使用 noindex 可能会有害。Discourse 已经通过使用规范 URL 正确处理了这个问题。
如果你对它们使用 noindex,那么整个页面都有可能被 noindex(因为它们都是相同的规范 URL),这将是灾难性的。我不确定会发生什么,但我会非常小心,因为 Google 经常以不可预测的方式处理边缘情况,而且它们处理这些情况的方式可能会随着更新而改变。我见过规范标签出现过奇怪的问题。
目前尚不清楚排名算法的确切工作原理,并且它会随着时间而变化,但另一件需要考虑的事情是,排名是入站链接的结果。如果外部网站链接到一个 /number URL,而该 URL 返回 noindex 标头,那么 Google 可能不会将入站“链接权重”转移到规范 URL,这可能会损害 Discourse 网站的搜索排名。
我认为,联系 Google 搜索团队并告知他们规范标签在广泛使用的 CMS 中不起作用,比试图想出一个可能不会以同样方式处理的变通方法要安全得多,因为 Google 会进行更多更新。
6 个赞
RGJ
(Richard - Communiteq)
14
不,这更凸显了修复问题的必要性。作为一名软件工程师,我发现很难移除功能,仅仅因为它没有 100% 正确运行。让我们看看是否能帮忙并彻底解决这个问题。
您确定吗?我从未在站点地图中见过帖子编号。
3 个赞
感谢您的质疑。“站点地图”这个词可能用错了。我的意思是,这些编号的帖子被Google抓取和索引,并在Google Analytics和Search Console中显示为单独的页面,导致我们的域名上有大量低质量页面。
如果这些编号没有被添加到每个回复中,Google只能看到原始帖子的网址。
2 个赞
RGJ
(Richard - Communiteq)
17
是的,如果谷歌遵守那些专门用于阻止谷歌这样做的 rel="canonical" 元标签(它们是谷歌发明的!),那就不会有问题了,我们仍然可以同时链接到特定帖子。
7 个赞
j127
18
听起来不错。如果默认关闭会是理想情况,因为不能排除它可能导致主题页面从 Google 或其他搜索引擎中消失。\n\n我不确定是否已经提到过,但另一种不使用 noindex 的修复方法可能是为帖子使用 URL 片段,因为那些不应被计为单独的页面。\n\n\n/t/slug/id#13\n
5 个赞
感谢您的建议。我想这应该可行……但考虑到最初的“正确”方法甚至不起作用,我怀疑除了完全取消编号回复之外,任何方法都无法解决问题。
当然,我并不是说所有 Discourse 用户都应该停止使用它们。说真的,如果不是因为 Google 的愚蠢(和/或如果我们打算让我们的论坛是私有的而不是公开的),我会全力支持……但仅仅是关闭回复自动编号的选项,就能极大地帮助那些运营公共论坛并关心其域名整体 SEO 健康状况的人。
1 个赞
j127
20
这样会移除链接到特定帖子的功能。将无法链接到 1000 帖主题中的第 789 帖,用户需要滚动那么远会很麻烦。
这很奇怪。我在 Google 上搜索,看我的论坛上的帖子 ID URL 是否被索引,在我检查的所有主题中,只有规范 URL 显示出来。
不过,我在另一个大型 Discourse 网站上看到了它。它也出现在这个主题中。[Google 查询]
我像这样对两个响应进行了 diff:
curl -s https://meta.discourse.org/t/removing-the-2-3-4-etc-links-for-each-reply-within-a-topic-url/209648 > 1.html
curl -s https://meta.discourse.org/t/removing-the-2-3-4-etc-links-for-each-reply-within-a-topic-url/209648/8 > 2.html
nvim -d 1.html 2.html
一个突出的区别是 article:published_time 不同,尽管它们应该相同,因为页面在其他方面几乎相同。我想知道那个元标记是否会让 Google 覆盖规范 URL。一位 Google 员工说,在某些情况下可以忽略规范 URL,请参阅此处。
<meta property="article:published_time" content="2021-11-19T15:57:21+00:00" />
<meta property="article:published_time" content="2021-11-20T06:48:06+00:00" />
另外,ignore_canonical 标签是 Discourse 特有的,还是 Google 有可能遵循它?我在 HTML 中看到了它。
<meta property="og:ignore_canonical" content="true" />
3 个赞
可能会稍微麻烦一些,但如果 page=2、page=3 等 URL 仍然有效(这不会像编号回复那样造成 SEO 问题),您至少可以将用户链接到对话中的正确页面。前提是他们愿意稍微滚动一下,这样就能让他们到达大部分位置。
有一个论坛就是这样运作的,那就是 BiggerPockets。他们的回复没有单独编号的 URL,但主题有编号的页面,如下所示:Kids throwing rocks at windows nearly everyday. Won't stop. (在滚动浏览每个主题和页面时,请注意 URL)。
他们的论坛一直是该网站从 SEO 角度来看如此特别和成功的主要组成部分,因此这是有效方法的绝佳示例。
有趣。我不知道这是否是导致问题的原因,但我可以看到这种不一致性可能会让 Google 感到困惑,从而忽略规范 URL。
即便如此,考虑到论坛的工作方式,除非您想完全删除每个主题的日期和时间,否则您无法消除这一点,对吗?考虑到每个帖子和回复的日期和时间,这可以说是论坛工作方式的一个组成部分。
1 个赞