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.comhttps://diyidaima.com 都会跳转到 https://www.diyidaima.com 了。

发表回复

后才能评论