ルート経由で内部リンクをリダイレクトする

現在、ウェブサイトに次のようなリダイレクトがあります。example.com/[0-9]+/[0-9]+example.com/tag/$1-$2。ここで、$1と$2は前の正規表現の値です。以下のような簡単なプラグインを作成しましたが、URLバーにexample.com/[0-9]+/[0-9]+と入力すると完璧に機能します。しかし、Discourse内の投稿で同じリンクを提供すると、リダイレクトが機能しません。これを達成する方法はありますか?

Discourse::Application.routes.append do
    get '/:year/:id', to: redirect('/tag/%{year}-%{id}') , constraints: {year: /[0-9]+/, id: /[0-9]+/}
end

生の投稿内の内部リンクを書き直し(再ベイク)する必要があります。

「いいね!」 3

これは、これまでの現在の投稿のみを変更するということですか?その後、新しい投稿ごとに実行する必要がありますか?

Discourse によって新しいリンクが記述されるため、最初から正しいものになります。

または、さらに投稿をインポートする場合、インポート スクリプトを変更して修正することになります。

私のルートの当初の目的はインポートとは関係ありません。example.com/123/456(123と456はどちらも[0-9]+である限り任意)をexample.com/tag/123-456のショートカットとして使用したいので、セマンティックに「間違っている」わけではありません。

しかし、そのルートは内部リンクでは機能しません(ルートを機能させるにはウェブサイトをリフレッシュする必要があります)。そのため、各example.com/[0-9]+/[0-9]+を検出し、example.com/tag/[0-9]+-[0-9]+に変更する必要があります。これは、新しい投稿を1つずつ解析しない限り、事実上不可能に見えます。

申し訳ありません。タグのルートが気に入らないという問題を見落としていました。そのルートを変更することで、どのような価値が得られるとお考えですか?手で入力するつもりですか?ディスコースで検索して入力できるので、そうはしないでしょう。

「タグ」をタグルートから削除することで、どのような問題を解決しようとしているのか、一歩下がって説明していただけますか?

私のウェブサイトは、プレプリントサーバーの研究論文とタグとの間で1対1の対応を作成します。ユーザーは、IDが123-456の論文に対応する、preprint.com/123/456にアクセスすることに慣れています。これはmywebsite.com/tag/123-456に対応するため、mywebsite.com/123/456をmywebsite.com/tag/123-456にリダイレクトするルートがあります。

アイデアは、ユーザーがpreprint.comをmywebsite.comにホットスワップして、プレプリントサーバーで閲覧していた正確な論文のページに着陸できるようにすることです。これは、誰かが投稿でmywebsite.com/123/456という内部リンクを提供し、リダイレクトされずに404エラーが発生することに気づくまで、すべて順調に機能していました。私は非常に特定かつターゲットを絞ったユーザーベースのためにDiscourseを使用しているため、私のユースケースは奇妙に聞こえるかもしれません。

なるほど。では、投稿に入力されたリンクを書き換えるテーマコンポーネントが必要だと思います。それがどのように機能するかはよくわかりません。1つは、ユーザーのトレーニングに少し時間がかかるのは、それらのリンクのbbcodeでしょう。しかし、テーマコンポーネントはそれらのリンクをハイジャックし、焼き付けられたときに書き換えることができると思います。

テーマコンポーネントについて言及していただいた後、以下のコンポーネントを使用して探していたものを部分的に達成することができました: Auto-Linkify Words

正規表現に完全に対応しているので、誰かが mywebsite.com - This website is for sale! - mywebsite Resources and Information. と入力すると、リンクが mywebsite.com - This website is for sale! - mywebsite Resources and Information. に正常に置き換えられます。

唯一残っているのは、誰かが https:// というプレフィックス付きで URL を入力した場合に機能しないことです。それでも非常に優れたコンポーネントです。

「いいね!」 1

素晴らしい!カスタムテーマコンポーネントでhttpsのものも修正できると思いますが、人々をそれに慣れさせるか、#123-456を使用するようにトレーニングすることもできるかもしれません。

「いいね!」 1