带www与不带www之间的跳转
in 博客搭建 with 8 comment

带www与不带www之间的跳转

in 博客搭建 with 8 comment

参考文章:http://www.susamko.com/88.html ,表示感谢!

一、带不带www

以前,大家访问网站都是访问www开头的,例如 www.baidu.com,但是现在,很多网站都支持直接访问不带www的,有一些会自动跳转到带www,有的却不会,而且即使你输入www,也会跳转到不带www的网址。

好像有点绕,我们来看例子:

大型网址为了考虑大家的接受程度,默认是会跳转到www的网址;个人博客无需考虑太多,可以自由设置,我个人喜欢不带www的,所以我的博客地址无论是否输入www,都会跳转到不带www的地址。

接下来,我们就来看一下,怎么设置Nginx,来实现输入www的网址跳转到不带www的网址。

二、配置跳转

博客搭建和Nginx配置请参考之前的文章 Halo博客搭建

1、http跳转

通常,我们在浏览器直接输入网址,浏览器默认会给网址加上http://,我们先来说这种情况下的跳转如何配置。

(1)、设置域名解析

将 juemuren4449.com 和 www.juemuren4449.com 都解析到博客服务器。

(2)、修改Nginx配置

进入到Nginx配置的目录:

cd /etc/nginx/

编辑Nginx的配置文件:

vim nginx.conf

按i进入编辑模式,修改完成之后,先按Esc,然后输入:wq,回车确认即可完成编辑保存。

将server_name的值设置为

juemuren4449.com www.juemuren4449.com;

增加下面的代码:

if ($host != 'juemuren4449.com' ) {
    rewrite ^/(.*)$ https://juemuren4449.com/$1 permanent;
}

上面代码的意思是,如果域名不是 juemuren4449.com ,那么就重定向为 juemuren4449.com

完整代码如下:

server {
    listen       80 default_server;
    listen       [::]:80 default_server;
    server_name  juemuren4449.com www.juemuren4449.com;
    root         /usr/share/nginx/html;
    # Load configuration files for the default server block.
    include /etc/nginx/default.d/*.conf;
    location / {
        proxy_pass http://127.0.0.1:6666/;
    }
    error_page 404 /404.html;
        location = /40x.html {
    }
    error_page 500 502 503 504 /50x.html;
        location = /50x.html {
    }
    if ($host != 'juemuren4449.com' ) {
        rewrite ^/(.*)$ https://juemuren4449.com/$1 permanent;
    }
    rewrite ^(.*) https://$host$1 permanent;
}

此时,测试 http://www.juemuren4449.com ,即可跳转到 https://juemuren4449.com

2、https跳转

我的网址已经配置了https,所以我要多考虑一种情况,就是直接访问 https://www.juemuren4449.com 的情况。

这种情况下,就要修改443端口监听里的配置了,也很简单,直接上配置了。

server {
    listen       443 ssl http2 default_server;
    listen       [::]:443 ssl http2 default_server;
    server_name  127.0.0.1:6666;
    root         /usr/share/nginx/html;
    ssl_certificate "/usr/local/nginx/conf/1_juemuren4449.com_bundle.crt";
    ssl_certificate_key "/usr/local/nginx/conf/2_juemuren4449.com.key";
    ssl_session_cache shared:SSL:1m;
    ssl_session_timeout  5m;
    ssl_ciphers HIGH:!aNULL:!MD5;
    ssl_prefer_server_ciphers on;
    # Load configuration files for the default server block.
    # include /etc/nginx/default.d/*.conf;
    location / {
     proxy_pass http://127.0.0.1:6666/;
    }
    error_page 404 /404.html;
        location = /40x.html {
    }
    error_page 500 502 503 504 /50x.html;
        location = /50x.html {
    }
    if ($host != 'juemuren4449.com' ) {
        rewrite ^/(.*)$ https://juemuren4449.com/$1 permanent;
    }
}

只是在最下方增加了下面的代码:

if ($host != 'juemuren4449.com' ) {
    rewrite ^/(.*)$ https://juemuren4449.com/$1 permanent;
}

此时,测试 https://www.juemuren4449.com ,即可跳转到 https://juemuren4449.com

至此,无论以何种网址访问我的博客,都会跳转到https://juemuren4449.com ,强制跳转修改完成!

3、反转

同理,如果想让不带www的跳转到带www的,只要将上面代码中的 juemuren4449.com 和 www.juemuren4449.com 互换位置即可。

三、总结

本质上来说,这是Nginx的重定向功能,通俗讲,就是能将A地址指向B地址。

更多重定向的说明,可以参考文章:http://www.susamko.com/88.html ,再次表示感谢!

欢迎关注我的公众号,及时获取最新文章推送。
8评论
  • bobbey

    你左边目录怎么做到的

    • 掘墓人 博主

      @bobbey 左边什么目录?

      • bobey

        @掘墓人 右边的那个文章目录

        • 掘墓人 博主

          @bobey 如果你的文章是markdown 写的,并且标题用的不同层级的#标记,自然就会出来右边的目录。

          • bobey

            @掘墓人 好像不可以 不知道啥情况

            • 掘墓人 博主

              @bobey 不应该,我的就是自动出来的,可以加个微信,方便沟通问题。

              • bobey

                @掘墓人 好像我用的主题版本是很久之前的

      • bobey

        @掘墓人 说错了