帶www與不帶www之間的跳轉


參考文章: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 ,再次表示感謝!

歡迎訪問的個人博客:掘墓人的小鏟子


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM