301为永久跳转,用户或搜索引擎向发出请求时,服务器返回的HTTP数据流中的头信息中状态码的一种,表示本URL永久性转移到另一个地址。
302为临时跳转,也是状态码,是指暂时转向到另外一个网址。
二者的区别主要是,一句话来说,302容易被搜索引擎视为spam,301则不会。
nginx官方rewrite文档:
nginx与apache规则区别不大,本代码实现2kb.com跳转到www.2kb.com,以避免搜索引擎分散权重。
server { server_name 2kb.com; rewrite ^/(.*)$ http://www.2kb.com$1 permanent; }
添加到/usr/local/nginx/conf/nginx.conf
添加在conf配置文件内即可,一般与伪静态的配置放在一起。
代码中判断,非www.2kb.com的,就自动跳转到www.2kb.com,
permanent代表301永久跳转,改为redirect则为302临时跳转。
如果301状态不生效的话:
需要去/usr/local/nginx/conf/vhost/目录下对应的conf文件里面添加
if ( $host = '2kb.com' ) { rewrite ^/(.*)$ http://www.2kb.com/$1 permanent; }
另外注意
原因是nginx语法检测特别严格,if和后面括号以及变量等号这些元素都要有空格,所以正确的规则是:
if ( $host = '2kb.com' ){ rewrite ^/(.*)$ http://www.2kb.com/$1 permanent; }
如果用^代替空格,规则如下:
if^(^$host^=^'2kb.com'^){ rewrite ^/(.*)$ http://www.2kb.com/$1 permanent; }
2KB项目(www.2kb.com,源码交易平台),提供担保交易、源码交易、虚拟商品、在家创业、在线创业、任务交易、网站设计、软件设计、网络兼职、站长交易、域名交易、链接买卖、网站交易、广告买卖、站长培训、建站美工等服务