Redirect old forum URLs to new Discourse URLs using permalinks

既存フォーラムのURLをパーマリンクを使用して新しいDiscourseのURLにリダイレクトする

他のフォーラムソフトウェアからインポートスクリプトのいずれかを使用してDiscourseに移行した場合、苦労して獲得したGoogle検索結果が引き続き同じコンテンツを指すようにしたいはずです。Discourseには、パーマリンクルックアップテーブルを使用してこれを処理するための組み込みの方法があります。

パーマリンクテーブルでは、一致させるURLと、そのURLが何を表示すべきかの2つの設定が可能です。URLがリダイレクトされる場所を定義するには、いくつかのオプションがあります。これらのいずれかを設定します。

  • topic_id: トピックを表示する
  • post_id: トピック内の特定の投稿を表示する
  • category_id: カテゴリを表示する
  • external_url: Discourseインスタンスに属さないURLにリダイレクトする

たとえば、元のフォーラムのトピックURLが http://example.com/discussion/12345 のようなもので、インポート後のそのトピックのURLが http://example.com/t/we-moved/987 の場合、マッピングは次のように設定できます。

cd /var/discourse
./launcher enter app
rails c
Permalink.create(url: '/discussion/12345', topic_id: 987)

Discourseは、トピックID 12345の正しいURLにHTTPレスポンスステータスコード301(恒久的に移動)でリダイレクトを実行します。301により、検索エンジンはレコードを更新し、新しいURLの使用を開始するはずです。

Discourseから離れたURLにリダイレクトしたい場合は、external_url を設定することで可能です。

Permalink.create(url: '/discussion/12345', external_url: 'http://archived.example.com/discussion/12345')

追加情報

サブカテゴリのIDを見つけるには、スラグで次のように検索できます。

Category.find_by_slug('products').id

そのURLのパーマリンクを削除するには、次のようにします。

Permalink.find_by_url("/blah").destroy

URLごとに1つのパーマリンクレコードしか存在できないため、URLで検索するだけです。

MyBBからDiscourseへのトピックマップの作成

DiscourseからWordPressへのリダイレクトに関する質問

https://meta.discourse.org/t/discourse-to-wordpress-redirect-questions/87031

パーマリンク正規化


最終レビュー:@SaraDev on 2022-06-03T20:00:00Z

「いいね!」 37