带www与不带www之间的跳转
参考文章: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 ,再次表示感谢!
欢迎访问的个人博客:掘墓人的小铲子