不少瀏覽器都開始逐漸更新至只支援 https 的網站,所以很多 http 網站都需要新增對 https 的支援,這時就需要涉及到 www 和不加 www 的跳轉問題,由於 www 和不加 www 使用的是不同的證書,所以需要做 301 跳轉處理,方案如下:
此處以域名 www.domain.com 和 testhttps.com 為例,修改 Nginx 配置檔案中 www.domain.com 對應的配置檔案:
server {
listen 80;
server_name domain.com www.domain.com;
return 301 https://www.domain.comm$request_uri;
}
server {
listen 443 ssl;
ssl_certificate /domain.com/cert.pem;
ssl_certificate_key /domain.com/privkey.pem;
server_name domain.com;
return 301 https://www.domain.com$request_uri;
}
server {
listen 443 ssl;
ssl_certificate /www.domain.com/cert.pem;
ssl_certificate_key /www.domain.com/privkey.pem;
server_name  www.domain.com;
}
作用說明:
第一段程式碼是將 http://www.domain.com 和 http://domain.com 301 重定向 https://www.domain.com;
第二段程式碼是將 https://domain.com 301 重定向 https://www.domain.com;
第三段程式碼是指定 https://www.domain.com 是 ssl 連線。
需要注意的是,第二段和第三段中的證書都需要各自域名對應的證書,比如說第二段就需要域名 https://domain.com 對應的證書,第三段就需要 https://www.domain.com 對應的證書。
按照上述示例修改為適合自己網站域名的設定,就可以實現在 https 模式下不加 www 強制跳轉到 www 的功能。