複数ドメインの正規化

複数ドメインの正規化

正規化(www を削除)して https に強制したいドメインが 2 つあります。

それでhttp://www.domain.io=>https://domain.ioそしてhttp://www.domain.ac=>https://domain.ac

私が見た限りでは、このように動作するはずですが、TLDを抽出する方法がわかりません

server_name domain.io domain.sh;
return 301 https://$server_name$request_uri;

ライブドメインは両方とも同じ単語なので、次のように一致させることができます。

(domain)(\.ac|\.io)

答え1

レバレッジをかけることをお勧めしますサーバブロック:

server {
    server_name www.domain.io;
    return 301 https://domain.io$request_uri;
}

server {
    server_name www.domain.sh;
    return 301 https://domain.sh$request_uri;
}

このような構成は、パフォーマンス/スケーラビリティ上の理由から、nginx の作成者が推奨する方法であるため、構成マネージャーを使用してテンプレートから簡単に生成できます。


しかし、リチャード・スミスが示唆したように、正規表現を使用することもできます。サーバーの名前指令:

server {
    server_name ~^(?:www\.)?(?P<host_domain>.+)$;
    return 301 https://$host_domain$request_uri;
}

ただし、私は個人的にはそのような方法を推奨せず、nginx の作成者による方法を推奨します。

関連情報