こんにちは。
古いフォーラムのURLは /posts/t{topic_id}-{url_slug} の形式です。
Discourse のパーマリンクを使用して、古いフォーラムのURLを新しいDiscourseのURLにマッピングしました。
問題は、Railsルーターが古いフォーラムURLへのリクエストを、「posts」リソースに関連付けられたルートのいずれかにルーティングしてしまうことです(どのルートかは不明です)。
パーマリンク正規化はルーティングの後で実行されるため、これは解決策になりません。
解決策は、URLが /posts/t{topic_id}-{url_slug} の形式の場合に、PostsController によるリクエスト処理をスキップするように config\routes.rb にカスタムルートを追加することだと思いますが、Railsルーティングについては十分な知識がありません。あるいは、これは正しい方法ではないのでしょうか?
ありがとうございます。
「いいね!」 1
pfaffman
(Jay Pfaffman)
2
それは残念ですね。
どのようなものですか?追加したパーマリンクは何ですか?
フォーラムはすでに公開されていますか、それともインポートスクリプトを実行できますか?(実際には、Rails で実行できる Ruby スクリプトを作成して、私が説明したようなパーマリンクを追加できます。)
パーマリンクを /oldforum/{topic_id} のようなものにして、nginx に /posts/t URL をキャッチさせて /oldforum/{topic_id} にリマップするように設定を追加することをお勧めします。
(AI によると) pups で replace を実行すると(すぐにアウトレットに追加できるようになりますが、それがいつになるかはわかりません)、discourse.conf の nginx 設定に以下を追加できます。
# server {} ブロック内に配置してください
location ~ ^/posts/t(?<topic_id>\d+)-.*$ {
# 恒久的なリダイレクト (301)
return 301 /oldforum/$topic_id;
# または、一時的なリダイレクト (302) の場合は以下を使用します:
# return 302 /oldforum/$topic_id;
}
コンテナ内でこれらの変更を手動で行ってから、app.yml に変更を追加するように逆算してテストすることをお勧めします。
「いいね!」 2

はい、まさにその通りです。パーマリンクをすべて追加するためにRubyスクリプトを作成しました。
これでうまくいきました!ありがとうございます。
「いいね!」 3
リダイレクトチェーンがサイトのSEOスコアに影響を与える可能性があるため、このソリューションは却下される可能性があることがわかりました。実際の投稿に到達するには、301リダイレクトが2回とリクエストが3回必要です。
そして、パーマリンクがリクエストを処理するようにします。これは機能するはずのように思えますが、確信が持てません。
「いいね!」 1