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 では、トピック ID シーケンスを手動で高い値(例: 20000)に設定して、新しいトピックがその番号から始まるようにすることができます。

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

サーバー自体を失ったのですか? :cry:

「いいね!」 2

ええ、データベース全体もです。

それで、新しいものを作ったので、すでに約6000のトピックがあります。これから2万件で作るべきでしょうか?

理想的には、新しいサイトを作成した直後にそれを行うのが最善でしたが、もう手遅れです。

遅れても何もしないよりはマシです。そのシーケンスが現在6000で、20000に設定すると、次の新しいトピックのIDは6000ではなく20000になります。

「いいね!」 1

つまり、1〜5999、そして2000以降のようになるということですか?そうですよね?そして、これが今後の段階で問題を引き起こさないことを願っています。

それとも、これをそのままにして、時間が経つにつれて新しいトピックが古いトピックを上書きするようにした方が良いでしょうか?

このアドバイスは、古いトピックIDが「再利用」されているという苦情に対処するものです。そのシーケンスを20000まで引き上げると、6000から19999の間のトピックが作成されるのを防ぐことができます。

「いいね!」 3

はい、たとえ6000などのように時間とともに上書きされて新しいトピックURLになったとしても、問題は発生しませんか、それとも将来的に何かを壊す可能性がありますか。