多域規範化

多域規範化

我有兩個網域想要標準化(刪除 www)並強制使用 https。

所以http://www.domain.io=>https://domain.iohttp://www.domain.ac=>https://網域.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 的創建者方式。

相關內容