
我有兩個網域想要標準化(刪除 www)並強制使用 https。
所以http://www.domain.io=>https://domain.io和http://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 的創建者方式。