美文网首页互联网科技程序员
带www与不带www之间的跳转

带www与不带www之间的跳转

作者: 掘墓人 | 来源:发表于2019-03-01 22:25 被阅读19次

    参考文章: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.comwww.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.comwww.juemuren4449.com 互换位置即可。

    三、总结

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

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

    欢迎访问的个人博客:掘墓人的小铲子

    相关文章

      网友评论

        本文标题:带www与不带www之间的跳转

        本文链接:https://www.haomeiwen.com/subject/xymruqtx.html