@codinghorror と同様に、私も デフォルト設定 を使用して、この Discourse 統合を Ghost と連携させています。この設定では、絶対 URL が discourseEmbedURL として使用されます。
数週間前、Ghost ブログのルーティングを変更することにしました。https://engineerworkshop.com/2020/02/20/how-to-set-up-wireguard-on-a-raspberry-pi/ のような URL の投稿を https://engineerworkshop.com/blog/how-to-set-up-wireguard-on-a-raspberry-pi/ にリダイレクトするように変更し、後者を新しいパーマリンクとしました。
問題
お察しの通り、この変更により問題が発生します。discourseEmbedURL が古い URL に設定されているため、URL が変更された状態で埋め込みスクリプトが呼び出されると、Discourse に新しいコメント投稿が作成されてしまいます。
試した解決策(失敗)
以前、この問題が起きることを予想していたため、URL を修正するために remap と正規表現パターンを組み合わせて使おうと考えました:rake posts:remap["[0-9]{4}\/[0-9]{2}\/[0-9]{2}","blog",regex]
これで「ある程度」は機能しましたが、元の Discourse コメント投稿内で URL が使用されていた箇所では、ブログ投稿を読み込むたびに、残念ながら Discourse に新しいコメントトピックが作成されてしまいました。
最終的には、サイトのすべての投稿を再読み込みし、古いトピックのコメントを新しいトピックに移行してから、元のトピックを削除しました(はい、その通りです)。ページを削除するのは SEO にとって悪影響であるだけでなく、ユーザー体験も損なわれます。
ご質問
私の正規表現による修正が機能しなかった理由は、Discourse のトピックがバックエンドで URL をキーとして何らかの形で紐付けられているためだと推測しています(Discourse のデータ構造については無知であることをお断りしておきます)。 今後の知識として、また将来同じことを試みる他の人のために、Discourse のトピックを新しいブログ投稿の URL に再マッピングする方法はありますか?
あらかじめありがとうございます!