配置Nginx访问IP和顶级域名跳转到www域名

vps上安装ghost后,用域名可以正常访问博客,用IP也可以访问,如果顶级域名(不带www的如denpe.com)做了解析,那它也可以访问博客。这造成同一页面被多个url分散权重,即使在head标签使用rel="canonical"也无法解决这个问题。最好的办法是让非标准url 301跳转到标准url如(http://www.denpe.com/xxx/xxx/)。

例如:要实现浏览器打开 https://denpe.com/tag/javascript/ HTTP状态返回码为301,并且跳转至https://www.denpe.com/tag/javascript/

修改/etc/nginx/sites-available目录下配置文件,在末尾添加以下内容。主题网址和ip替换。

server {  
        listen 80;
        server_name denpe.com www.denpe.com 107.167.184.244;
        return 301 https://www.denpe.com$request_uri;
    }
server {  
        listen 443;
        server_name denpe.com 107.167.184.244;
        return 301 https://www.denpe.com$request_uri;
    }

SSL加密后的设置

server {  
    server_name denpe.com www.denpe.com  107.167.184.244;
    return 301 https://www.denpe.com$request_uri;
}

可能有的人喜欢全站使用不带www的顶级域名,那可以将上面代码反过来写。

server {  
    server_name www.denpe.com 107.167.184.244;
    return 301 http://denpe.com$request_uri;
}