解决Discourse中索引URL冲突的策略

大家好,
我正在运行一个 Discourse 论坛,重建后遇到了一个主要的 SEO + 索引问题,需要帮助。

发生了什么:

  • 我原来的 Discourse 论坛崩溃了,我丢失了大约 10,000 个主题

  • 从头重建了论坛,保留了相同的域名相同的 Google Search Console (GSC) 属性

  • 由于 Discourse 使用增量主题 ID,新创建的主题现在重用旧的主题 ID(例如,/t/783 以前属于已删除的主题,现在它被分配给了一个新的主题)。

目前的问题:

  1. GSC 显示超过 12,000 个“已抓取 - 未编入索引” 的 URL。

  2. /t/old-topic-title/783 这样的旧主题 URL 仍然被索引或被抓取

  3. 这些 URL 现在指向新内容(例如,/t/new-topic-title/783),这会导致搜索中的标题不匹配,并可能触发重复/单薄内容惩罚

  4. 一些旧的主题 URL 仍然在提供服务(不是 404 或 410),并且与具有相同 ID 的当前主题合并。

  5. 站点地图包含重用的 ID,进一步混淆了抓取工具。

我应该怎么做才能解决这个问题?

在 postgres 中,您可以手动将 topic ID 序列设置为一个较高的值,例如 20000,这样新的 topic 将从该数字开始:

SELECT setval('topics_id_seq', 20000, false);

您丢失了服务器本身? :cry:

2 个赞

是的,包括整个数据库。

所以我新建了一个,现在已经有大约 6000 个主题了,那么从现在开始,我应该从 2 万个开始做吗?

理想情况下,您应该在新站点创建后立即执行此操作,但现在为时已晚。

亡羊补牢,犹未为晚 - 如果该序列当前为 6000,您将其设置为 20000,则下一个新主题的 ID 将为 20000 而不是 6000。

1 个赞

所以就像 1-5999,然后是 2000 等等?对吗?并且希望这不会在后续阶段引起任何问题?

或者我应该就此作罢,随着时间的推移,新的主题会覆盖旧的主题?

此建议是为了解决您关于旧主题 ID 被“重复使用”的投诉。将该序列提升到 20000 将防止创建 6000 到 19999 之间的任何主题。

3 个赞

是的,假设它甚至会随着时间推移而覆盖,比如 6000 等等,并使用新的主题 URL,这不会导致任何问题,或者未来可能会破坏某些东西。