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

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

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

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

  • topic_id: トピックを表示する
  • post_id: トピック内の特定の投稿を表示する
  • category_id: カテゴリを表示する
  • tag_id: タグを表示する
  • user_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 の使用を開始するはずです。

一部の URL を Discourse からリダイレクトしたい場合は、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 へのリダイレクトに関する質問

パーマリンクの正規化


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

「いいね!」 37