1. ホーム
  2. redirect

[解決済み] NginxでURLをリダイレクトする方法

2022-05-14 16:31:55

質問

私は、すべての http://test.com へのリクエストを http://www.test.com . これはどのようにしたらできるのでしょうか。

サーバーブロックに、私は

rewrite ^/(.*) http://www.test.com/$1 permanent;

と表示されますが、ブラウザでは

ページが正しくリダイレクトされない

Firefox は、サーバーがこのアドレスへのリクエストを決して完了しない方法でリダイレクトしていることを検出しました。

私のサーバブロックは次のようになります。

 server {
            listen       80;
            server_name  test.com;
            client_max_body_size   10M;
            client_body_buffer_size   128k;

            root       /home/test/test/public;
            passenger_enabled on;
            rails_env production;

            #rewrite ^/(.*) http://www.test.com/$1 permanent;
            #rewrite ^(.*)$ $scheme://www.test.com$1;

            error_page   500 502 503 504  /50x.html;
            location = /50x.html {
                    root   html;
            }
    }

どのように解決するのですか?

別のサーバーブロックを追加するのがベストです。

server {
        #implemented by default, change if you need different ip or port
        #listen *:80 | *:8000;
        server_name test.com;
        return 301 $scheme://www.test.com$request_uri;
}

そして、メインサーバーブロックのserver_name変数を以下のように編集してください。

server_name  www.test.com;

重要 : 新規 server ブロックは正しい方法です。 if は悪 . の代わりにロケーションとサーバを使用する必要があります。 if を使用する必要があります。 Rewrite は時々 も悪 であるため、これを return .