Nginx让带www的域名跳转到根域名上和让不带www的根域名跳转到带www的域名上

在Nginx下有许多让带www域名跳转到不带www的根域名上或者让不带www跳转到www的域名上的方法

下面说一下我正在用的方法,希望对各位能有所帮助.

 

重定向非www域名到www上

单域名

server {
        server_name example.com;
        return 301 $scheme://www.example.com$request_uri;
}

全部域名

server {
        server_name "~^(?!www\.).*" ;
        return 301 $scheme://www.$host$request_uri;
}

 

重定向www域名到根域名上

单域名

server {
        server_name www.example.com;
        return 301 $scheme://example.com$request_uri;
}

全部域名

server {
         server_name "~^www\.(.*)$" ;
         return 301 $scheme://$1$request_uri ;
}

 

我们创建单独的 Server{} 块是Nginx官方推荐的最佳方法来实现跳转.

虽然WordPress下也有插件能在PHP级别上做到跳转,但是出于性能考虑,总是让Nginx来做Nginx可以做到的事.