多域名规范化

多域名规范化

我有两个域名想要规范化(删除 www)并强制使用 https。

所以http://www.domain.io=>https://domain.iohttp://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 创建者所推荐的方式。


不过,正如 Richard Smith 所建议的,你也可以在服务器名称指示:

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

然而,我个人不推荐这种方式,而是推崇 nginx 的创建者方式。

相关内容