首页 > 后台 > Nginx做301重定向——带www与不带www之间的跳转

Nginx做301重定向——带www与不带www之间的跳转

什么是“301重定向”?

在做SEO的时候,301重定向是站长们必不可少的一项工作。“301”是HTTP数据流中头信息状态码的一种,“301重定向”表示本网页永久性转移到另一个地址。

通俗点讲,就好比朋友来我家找我时,我留了个小纸条在门口写道:“我已经去公园玩啦,请到那里找我吧。”

 

为什么要做“301重定向”?

网站搭建过程中,难免遇到目录结构改动,域名更换,网页重命名等等情况,在这种情况下,我们就需要把这个变动告诉给外界。301重定向不仅对用户很重要,而且对于搜索引擎也非常重要。当网站改版后并通过实施301重定向, 可以让用户的访问跳转到新版页面不是404错误页面,这样就提高了用户体验的友好性,更重要的是,301重定向可以让搜索引擎知道你移动了网站内容,避免了不必要的权重分散,避免了之前页面的一切积累(比如PR值)的白白丧失。

在我上一篇文章中介绍到【如何让带www的域名和不带www域名都能访问网站】,其实这样做,在我们看来,不过两个域名(susamko.com和www.susamko.com)同时指向同一个网站而已,但是在搜索引擎看来,这却是两个不同的网站,这样势必会导致你网站的权重分散的问题,像这种情况就需要做一下301重定向了。

 

怎么做“301重定向”?

不同的服务器环境、不同的业务需求会有不同的重定向做法,这里以我的网站为例,用Nginx做301重定向之“带www与不带www之间的跳转”。

首先要确定你要以哪个域名作为你的主域名,带www和不带www的二者只能选其一。不带www的域名是顶级域名,它不会受到外部链接和内部链接造成的权重下降的困扰,同样的内容会有更好的收录效果。而带www的域名严格来说是二级域名,它的优点在于更为接近访问习惯——大家都习惯了加www的网址,带www对用户更为友好。

所以,站在用户体验的角度上,本站选的是带www的域名:www.susamko.com。

确定首选域名后,我们就得做服务器那一块的配置了,我们可以在Nginx配置文件的里面最后三行:

server {
    listen 80 default_server;
    listen [::]:80 default_server ipv6only=on;
    root /var/www;
    index index.php index.html index.htm;

    server_name www.susamko.com susamko.com;

    if ($host != ‘www.susamko.com’ ) {
        rewrite ^/(.*)$ http://www.susamko.com/$1 permanent;
    }

    ……

}

 

这三行代码的作用相当于:当访问susamko.com时,Nginx将 susamko.com 重写为 www.susamko.com ;而当访问www.susamko.com时不做重写操作。

这里用到的是Nginx的 rewrite方法,详细用法见官方文档

如果把不带www的域名作为首选域名的话,则应该这样写:

if ($host != ‘susamko.com’ ) {
    rewrite ^/(.*)$ http://susamko.com/$1 permanent;
}

配置好保存文件后重启Nginx即可。

 

如何检测“301重定向”是否成功?

这里可以到站长之家那里检测:HTTP状态查询

下面这张图片,我查询的是susamko.com,可以看到,返回的状态码正为我们所要的301:

2016050413562690

 

而输入www.susamko.com,则返回正常的状态码:

201605041356273

这就说明不带www的域名已经被我们成功重定向到带www的域名上。

 


本文标题:Nginx做301重定向——带www与不带www之间的跳转
转载请注明出处,欢迎分享