nginx配置访问xxx.com跳转www.xxx.com
如何访问xxx.com跳转www.xxx.com呢?
博主使用的是phpstudy,内置Nginx,所以此处以Nginx为例,域名以diyidaima.com为例。
解决办法是在Nginx里面配置 rewrite 规则。打开 nginx.conf 文件,并找到server配置段。此处phpstudy的nginx.conf在C:/phpstudy_pro/Extensions/Nginx1.15.11/conf目录下,如果你只是使用Nginx,则可以在nginx.conf加入如下配置:
server {
listen 80;
server_name diyidaima.com;
if ($host != 'www.diyidaima.com') {
rewrite ^/(.*)$ https://www.diyidaima.com/$1 permanent;
}
}
这样用户直接访问 diyidaima.com 直接跳转的 www.diyidaima.com 。即让不带 www 的域名跳转到带 www 的域名。可是这样不够,因为端口是80,只能够解决 http://diyidaima.com 跳转到 https://www.diyidaima.com 的情况。万一是 https://diyidaima.com 呢,所以需要增加如下配置:
server {
listen 443 ssl;
ssl_certificate /conf/ssl/xxx.pem; #ssl证书地址
ssl_certificate_key /conf/ssl/xxx.key; #ssl证书地址
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
server_name diyidaima.com;
if ($host != 'www.diyidaima.com') {
rewrite ^/(.*)$ https://www.diyidaima.com/$1 permanent;
}
}
但使用phpstudy,可以通过界面配置,会产生4个.conf文件,可以在C:/phpstudy_pro/Extensions/Nginx1.15.11/conf/vhosts下面找到,分别是diyidaima.com_80.conf、diyidaima.com_443.conf、www.diyidaima.com_80.conf、www.diyidaima.com_443.conf,剩下的default-default.conf是默认的,可以不管。我们可以将上面的第1和第2处代码配置分别覆盖写入diyidaima.com_80.conf和diyidaima.com_443.conf文件即可。原因是我们在 nginx.conf 看到有这样一句代码:
include vhosts/*.conf;
该代码在 nginx.conf 53行处,其本质就是调用了所有的.conf文件。
这样配置之后,http://diyidaima.com 和 https://diyidaima.com 都会跳转到 https://www.diyidaima.com 了。