參考文章:http://www.susamko.com/88.html ,表示感謝!
一、帶不帶www
以前,大家訪問網站都是訪問www開頭的,例如 www.baidu.com,但是現在,很多網站都支持直接訪問不帶www的,有一些會自動跳轉到帶www,有的卻不會,而且即使你輸入www,也會跳轉到不帶www的網址。
好像有點繞,我們來看例子:
- baidu.com(即使不輸入www,也會跳轉到www的網址)
- www.juemuren4449.com(即使輸入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 ,再次表示感謝!
歡迎訪問的個人博客:掘墓人的小鏟子
