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临时跳转。
posted @ 2016-05-13 10:38  FreemanCheung  阅读(686)  评论(0编辑  收藏  举报