新しいドメインへの301リダイレクトの作成方法

nginx.conf を編集しています。domain1.com のすべてのページを domain2.com にリダイレクトしたいです。

ファイルの編集方法について教えてください。

以下のような行があります:

if($http_host != domain1.com){
   rewrite (.*) https://domain1.com$1 permanent;
}

if 文の条件を「=」に変更し、rewrite の先を新しいドメインにすれば機能しますか?それとも他にも変更が必要な点はありますか?

例:

if($http_host = domain1.com){
   rewrite (.*) https://domain2.com$1 permanent;
}

一般的に、以下のように設定します。

server {
    listen 80;
    server_name domain1.com;
    return 301 https://domain2.com$request_uri;
}

上記のディレクティブは、ご自身のニーズに合わせてさまざまな方法で修正できます。

ありがとうございます、いくつか質問があります。

設定ファイルには以下のような行が含まれています。

server {
   listen 80
    return 301 https://domain1.com$request_uri
}

なぜデフォルトで 301 が設定されているのか分かりません。それを上書きすべきでしょうか、それとも提供されたものをその上または下に新規作成すべきでしょうか?server_name は必要ですか?

すべてのリクエストをリダイレクトすると、LetsEncrypt の更新プロセスに支障が出ますか?

Discourseコンテナ内でnginx.confを編集していますか、それとも外部のnginxリバースプロキシですか?

内部の場合は、app.ymlファイルで設定を行う必要があります。その方法の例は複数あります。

外部のnginxリバースプロキシで設定している場合は、/etc/nginx/conf.dフォルダにredirect.confという新しいファイルを作成し、私が提供した設定例を記述してください。

コンテナ内です。app.yml の解決策を探します。フォルダ向けのものは見つけましたが、ドメイン変更向けのものも見つかることを願っています。ありがとうございます。

これをお試しいただきましたか?

はい、すぐに実装いたします。お時間をいただき、誠にありがとうございます。

@itsbhanusharma 今すぐコードを実装しています。質問ですが、Google が URL を変更するまで古いサーバーをしばらく維持する予定なので、Let’s Encrypt が自動的に更新されるかどうか知りたいです。この 301 リダイレクトの変更により Let’s Encrypt の更新が失敗しないようにするために、何か追加すべきことはありますか?

Set up Let’s Encrypt with multiple domains / redirects は機能しますか?

リダイレクトから .well-known/acme-challenge を除外したいです。

301 リダイレクトと Let’s Encrypt の問題についてはこちらを参照してください:issue