Nginx系列-301重定向设置的两种方法

  重定向说直白点,就是通过方法将各种网络请求重新定个方向转到其它位置,也就是通常说的,网页跳转。做网站优化,我们基本知道url标准化需要采用301重定向。那么如何设置和制作301重定向呢?

为什么要重定向?

  做网站优化,我们基本知道url标准化需要采用301重定向。当www.bnuz163.com和bnuz163.com都访问同一个站点时,重定向就可以把www.bnuz163.com和bnuz163.com合并,那么如果不合并会怎么样呢?如果不合并,访问这2个域名时服务器就会产生2个不相同的session,就会导致刚从bnuz163.com域名登陆后,再打开www.bnuz163.com会发现并没有登陆,需要重新登陆。这并不是我们要的结果,所以很有必要将这2个域名合并,使用同一个session。

如何设置301重定向?

第一种方法:

server {
      ...
      server_name www.bnuz163.com bnuz163.com;
      if ($host != 'www.bnuz163.com' ) {
         rewrite ^/(.*)$ http://www.bnuz163.com/$1 permanent;
      }
      ...
}

第二种方法:

server {
      ...
      server_name www.bnuz163.com bnuz163.com;
      if ($host = 'bnuz163.com' ) {
         rewrite ^/(.*)$ http://www.bnuz163.com/$1 permanent;
      }
      ...
}

这两种方法中, permanent是关键,详细说明见nginx重定向规则说明。

last – 基本上都用这个Flag。
break – 中止Rewirte,不在继续匹配
redirect – 返回临时重定向的HTTP状态302
permanent – 返回永久重定向的HTTP状态301

测试是否定向成功
/usr/local/nginx/sbin/nginx -t
提示:

the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
configuration file /usr/local/nginx/conf/nginx.conf test is successful

测试成功, 重启nginx,输入命令:
/usr/local/nginx/sbin/nginx -s reload
重启之后测试一下~是否成功设定完成!

301与302重定向之间有什么区别?

  最后顺便说说什么是301重定向?什么是302重定向?它们有什么区别?

什么是301重定向?什么是301转向?

  301转向(或叫301重定向,301跳转)是当用户或搜索引擎向网站服务器发出浏览请求时,服务器返回的HTTP数据流中头信息(header)中的状态码的一种,表示本网页永久性转移到另一个地址。

什么是302重定向?

  302重定向又称之为302代表暂时性转移(Temporarily Moved ),英文名称:302 redirect。 也被认为是暂时重定向(temporary redirect),一条对网站浏览器的指令来显示浏览器被要求显示的不同的URL,当一个网页经历过短期的URL的变化时使用。一个暂时重定向是一种服务器端的重定向,能够被搜索引擎蜘蛛正确地处理。

301重定向与302重定向有什么区别?

  302重定向是暂时的重定向,搜索引擎会抓取新的内容而保留旧的网址。因为服务器返回302代码,搜索引擎认为新的网址只是暂时的。
  301重定向是永久的重定向,搜索引擎在抓取新内容的同时也将旧的网址替换为重定向之后的网址。

文章目录
  1. 1. 为什么要重定向?
  2. 2. 如何设置301重定向?
    1. 2.0.1. 第一种方法:
    2. 2.0.2. 第二种方法:
  • 3. 301与302重定向之间有什么区别?
    1. 3.1. 什么是301重定向?什么是301转向?
    2. 3.2. 什么是302重定向?
    3. 3.3. 301重定向与302重定向有什么区别?