既存フォーラムの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