Nginx做301重定向——带www与不带www之间的跳转
什么是“301重定向”?
在做SEO的时候,301重定向是站长们必不可少的一项工作。“301”是HTTP数据流中头信息状态码的一种,“301重定向”表示本网页永久性转移到另一个地址。
通俗点讲,就好比朋友来我家找我时,我留了个小纸条在门口写道:“我已经去公园玩啦,请到那里找我吧。”
为什么要做“301重定向”?
网站搭建过程中,难免遇到目录结构改动,域名更换,网页重命名等等情况,在这种情况下,我们就需要把这个变动告诉给外界。301重定向不仅对用户很重要,而且对于搜索引擎也非常重要。当网站改版后并通过实施301重定向, 可以让用户的访问跳转到新版页面不是404错误页面,这样就提高了用户体验的友好性,更重要的是,301重定向可以让搜索引擎知道你移动了网站内容,避免了不必要的权重分散,避免了之前页面的一切积累(比如PR值)的白白丧失。
在我上一篇文章中介绍到【如何让带www的域名和不带www域名都能访问网站】,其实这样做,在我们看来,不过两个域名(zeakhold.com和www.zeakhold.com)同时指向同一个网站而已,但是在搜索引擎看来,这却是两个不同的网站,这样势必会导致你网站的权重分散的问题,像这种情况就需要做一下301重定向了。
怎么做“301重定向”?
不同的服务器环境、不同的业务需求会有不同的重定向做法,这里以我的网站为例,用Nginx做301重定向之“带www与不带www之间的跳转”。
首先要确定你要以哪个域名作为你的主域名,带www和不带www的二者只能选其一。不带www的域名是顶级域名,它不会受到外部链接和内部链接造成的权重下降的困扰,同样的内容会有更好的收录效果。而带www的域名严格来说是二级域名,它的优点在于更为接近访问习惯——大家都习惯了加www的网址,带www对用户更为友好。
所以,站在用户体验的角度上,本站选的是带www的域名:www.zeakhold.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.zeakhold.com zeakhold.com;
if ($host != ‘www.zeakhold.com’ ) {
rewrite ^/(.*)$ http://www.zeakhold.com/$1 permanent;
}
……
}
这三行代码的作用相当于:当访问zeakhold.com时,Nginx将 zeakhold.com 重写为 www.zeakhold.com ;而当访问www.zeakhold.com时不做重写操作。
这里用到的是Nginx的 rewrite方法,详细用法见官方文档。
如果把不带www的域名作为首选域名的话,则应该这样写:
if ($host != ‘zeakhold.com’ ) {
rewrite ^/(.*)$ http://zeakhold.com/$1 permanent;
}
配置好保存文件后重启Nginx即可。
如何检测“301重定向”是否成功?
这里可以到站长之家那里检测:HTTP状态查询
下面这张图片,我查询的是zeakhold.com,可以看到,返回的状态码正为我们所要的301:
而输入www.zeakhold.com,则返回正常的状态码:
这就说明不带www的域名已经被我们成功重定向到带www的域名上。
本文标题:Nginx做301重定向——带www与不带www之间的跳转
转载请注明出处,欢迎分享