ダイナミックリダイレクトをどのように使用できますか?

Vanilla から Discourse へ移行しており、8 年分のトピックをインポートするのではなく、最初から始めることにしました。現在のサイトは forums.29th.org なので、Discourse が完全に稼働したら、forums.29th.org を Discourse に割り当て、Vanilla は vanilla.29th.org のような別のドメインに移す予定です(実際、現在複数の古いフォーラムを持っているため、適切な URL 命名規則を考えるのに苦労しています!)。

そこで、Vanilla の URL パターンに一致するリクエストを別のドメインへリダイレクトしたいと考えています。これは nginx のルールを使えば非常に簡単ですが、(a) Discourse の組み込み機能(例えば Permalinks など)で可能かどうか確認したかったこと、(b) 可能でなければ、nginx 設定を正しく編集する方法(できればバージョン管理もできると良いのですが)を尋ねたかったことがあります。

参考までに、Vanilla のトピック URL は以下のようになっています:

/discussion/42206/example-topic#latest

よろしくお願いします!

/discussion を新旧ドメインへリダイレクトするには、nginx ルールを使用します。(古いデータをインポートすることも推奨しますが、それは私の生業ですので)

@pfaffman ありがとうございます。では、nginx ルールを編集する場所はどうやって確認すればよいでしょうか?launcher enter app を実行して /etc/nginx/nginx.conf などのファイルを直接修正する必要があるのでしょうか?これらは一時的なコンテナであると仮定すると、バージョン管理されたファイルを編集するはずだと予想していました。それは可能でしょうか?

app.yml に項目を追加して nginx 設定を変更したり、外部の設定を実行したりできます。どこに送るのが最適か確信が持てませんが、別の目的で nginx 設定を変更する例を以下に示します。

  after_ssl:
   # すべてのホストをメインドメイン名にリダイレクトしない
    - replace:
        filename: "/etc/nginx/conf.d/discourse.conf"
        from: /if \(\$http_host[^\}]*\}/m
        to: ""
    - replace:
        filename: "/etc/nginx/conf.d/discourse.conf"
        from: /return 301.*$/
        to: "return 301 https://$host$request_uri;"

完璧です。まさに見たかった内容です。ありがとうございます!このような情報は、どこか参照できる場所に記載されていますか?

「いいね!」 1

他にもこのページにたどり着いた方のために、私はSSHでサーバーにログインし、/var/discourse に移動して containers/app.yml を vim で開き、hooks セクションまでスクロールしました。そして、以下の部分を追加しました。

hooks: # この行は元からあるはずです
  after_ssl:
    - replace:
        filename: "/etc/nginx/conf.d/discourse.conf"
        from: "location @discourse {"
        to: |
          location /discussion/ {
            return 301 https://vanilla.29th.org$request_uri;
          }

          location @discourse {
  after_code: # この行は元からあるはずです
「いいね!」 1

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.