nginx 301跳转到带www域名方法(不带www访问时重定向到带www域名)
1.先说本人测试通过的方法,也是来自官方文档的方法。官方文档:http://nginx.org/en/docs/http/converting_rewrite_rules.html
本人网站测试地址:uuid.online(因cnblog原因,链接地址只能填www.uuid.online,测试时先跳转到这个地址,再删除www测试)
直接上本人的配置文件。
server { listen 80; server_name uuid.online; return 301 http://www.uuid.online$request_uri; } server { listen 80; server_name www.uuid.online; ... }
2.目前网络上搜索出来的方法如下
a.
server { listen 80; server_name www.uuid.online uuid.online; if ($http_host =uuid.online) { rewrite (.*) http://www.uuid.online$1; } ... }
不推荐用这种方法,不是我不推荐,是nginx官方不推荐啊!!!原话如下:This is a wrong, cumbersome, and ineffective way.翻译过来就是:这是一种错误的,难处理的,无效的方法。
官方原文链接地址:http://nginx.org/en/docs/http/converting_rewrite_rules.html
b.该方法未测试,不评价。
如下:在ngxin域名的配置文件vhost/www.abc.com.conf(具体视你域名配置文件) 编辑如下:
.....
......
server
{
........
server_name www.abc.com ;//只留一个
......
}
文件的底部添加如下代码块(独立于上面的代码外):
server {
server_name abc.com;
rewrite ^(.*)$ http://www.abc.com$1 permanent;
}
另外补充说明一点:
301永久跳转,当用户或搜索引擎向网站服务器发出浏览请求时,服务器返回的HTTP数据流中头信息中的状态码的一种,表示本网页永久性转移到另一个地址。
302临时跳转,也是状态码的一种,意义是暂时转向到另外一个网址。
二者的区别主要是,一句话,302容易被搜索引擎视为spam,301则不会。
permanent代表301永久跳转,改为redirect则为302临时跳转。