网站在更换域名是不可避免的事,如何避免流量和权重的流失显得至关重要。俺么我们更换为新的域名后如何做好301 跳转呢?今天就将教给大家。

博客更换域名后利用Nginx实现完美301跳转 - 第1张 - boke112联盟(boke112.com)

域名 301 跳转的原理

301 跳转是指页面永久性移走,又叫 301 重定向,是一种非常重要的“自动转向”技术,是网址重定向最为可行的一种办法。当用户或搜索引擎向网站服务器发出浏览请求时,服务器返回的 HTTP 数据流中头信息(header)中的状态码的一种,表示本网页永久性转移到另一个地址。

301 跳转主要职能“域名转向”

路由选择的变化也是对数据报文经由路径的一种重定向。在我们网站建设中,时常会遇到需要网页重定向的情况:像网站调整,改变了网站的目录结构,网页被移到一个新地址。或者网页扩展名改变,如因应用需要把.php 改成.html 或.shtml,在这些情况下,如果不做重定向,则用户收藏夹或搜索引擎数据库中旧地址只能让访问客户得到一个 404 页面错误信息,访问流量白白丧失。又比如某些注册了多个域名的网站,也需要通过重定向让访问这些域名的用户自动跳转到主站点等等。

常用的重定向方式

301 重定向:301 代表永久性转移(Permanently Moved),301 重定向是网页更改地址后对搜索引擎最友好的方法,只要不是暂时搬移的情况,都建议使用 301 来做转址。

302 重定向:302 代表暂时性转移(Temporarily Moved ),在前些年,不少 Black Hat SEO 曾广泛应用这项技术作弊。各大主要搜索引擎均加强了打击力度,像 Google 对 BMW 德国网站的惩罚。即使网站客观上不是 spam,也很容易被搜寻引擎误判为 spam 而遭到惩罚。

博客更换域名后利用Nginx实现完美301跳转 - 第2张 - boke112联盟(boke112.com)

301 重定向的意义

网站改版完成,先将新版上线,在线上保持一段时间新旧内容共存。新旧内容同时存在一段时间,且新版内容已开始收录后,对新旧内容设置 301 跳转,将旧版内容指向新版对应内容。

301 重定向有利于网站首选域的确定,对于同一资源页面多条路径的 301 重定向有助于 URL 权重的集中。按照上述操作方式在现有情况下能够尽可能的降低网站因改版带来的流量损失,提高用户体验度,同时有利于网站优化。

博客更换域名后利用Nginx实现完美301跳转 - 第3张 - boke112联盟(boke112.com)

更换域名的经历心得

首先需要部署好新旧域名的解析和 Nginx 里的配置,具体要求如下:

  • 新老域名一律指向新域名服务器 IP。
  • 所有的 301 重定向跳转一律在 Nginx 里设置实现。
  • 无论新旧域名都需要有有效的 SSL 证书并且在 Nginx 里的[server]指定好证书的绝对路径,保证 Nginx 可以找到使用。
  • 老域名独立的[server]段定义要存在于新域名的 Nginx 配置文件里
server
        {
        listen 443 ssl http2;
        server_name 新域名;
        server_tokens   off;
        ……
}

 

此处省略新域名的具体配置,节省篇幅嘛

下面是老域名的[server]定义

server
        {
        listen 80; #监听 80 端口,保证`http://老域名`这样的形式可以被识别并 301 跳转到新域名。
        listen 443 ssl;#监听 443 端口,保证`https://老域名`这样的形式可以被识别并 301 跳转到新域名。
        server_name 老域名;
        #这里声明的 SSL 证书就是为了保证`https://老域名`这样的形式可以被识别并 301 跳转到新域名。
        ssl_certificate //ssl/老域名.cer;
        ssl_certificate_key //ssl/老域名.key;                            
        #这里通过条件判断凡事 http 前缀开头的老域名请求一律 301 跳转到新域名。
        if ( $scheme = "http" ) {
                return 301 https://新域名$request_uri;
        }
        #替换老域名链接为新域名链接,比如:https://老域名/123.html 替换为 https://新域名/123.html
        #完全自动化的智能链接重写替换,访问这几乎是感觉不到的实现 301 跳转,这里主要是针对文章、页面等各类老域名链接网址的。
        location / {
        rewrite ^(.*)$  https://新域名$1 permanent;
        }
}

 

如果你要使用上述的配置,请记得替换相关信息为自己的域名哦!

完成后保存退出,重启 Nginx 生效。因为修改了解析里的老域名解析,所以受制于解析生效时间,这个 301 跳转实现可能会存在一定的延时,耐心等待解析全网生效即可。

通过 curl 在命令行里验证 301 跳转是否生效

curl -I https://lnmp.ymanz.com

当看到如下输出信息时即表明 301 跳转已经实现了!

HTTP/1.1 301 Moved Permanently
Server: nginx
Date: Mon, 12 Feb 2018 05:51:28 GMT
Content-Type: text/html
Content-Length: 178
Connection: keep-alive
Location: https://新域名/

注意查看第一行的 HTTP/1.1 301 Moved Permanently 即表明这个请求被 301 重定向了。最后一行的 Location 显示的是重定向后的网址。

我们再测试一下文章或者页面链接是否也可以 301 跳转

curl -I https://老域名/cross.html

输出结果:

HTTP/1.1 301 Moved Permanently
Server: nginx
Date: Mon, 12 Feb 2018 05:53:54 GMT
Content-Type: text/html
Content-Length: 178
Connection: keep-alive
Location: https://ff4.cn/cross.html

可以看到最后一行的 Location 显示的是重定向后的网址为 https://ff4.cn/cross.html,正好是新域名对应的链接。完美实现了 301 跳转。

新老域名更换 301 跳转的重要意义

通过上述的验证后,大家应该就理解了新老域名更换后 301 跳转重定向的重要意义,总结下来就是老域名的外链资源不会浪费都被永久的强制 301 重定向到了新域名下,这对新域名快速获得老域名的收录和权重都有很大的帮助,就是告诉搜索引擎这两个域名都是一样的内容只是域名进行了更换,这样无论是搜索引擎里是否提供了更换域名的服务,随着时间的推移,慢慢的搜索引擎就会将老域名都指向新域名,这样更换域名造成的 SEO 方面的损失就会讲到最低。

最后再强调一下,这个 301 跳转重定向建议大家长期保存直至新域名的流量和搜索权重恢复到老域名同等水平的时候再取消,建议大家长期保留的,如果老域名本是是 SSL 加密协议的 https 的话,记得要及时更新 SSL 证书确认为都是最新有效期的证书即可(专指Let’s Encrypt 证书一类)。

发表评论

您的电子邮箱地址不会被公开。

评论(1)

  • 一位WordPress评论者 2021年12月28日 下午2:48

    嗨,这是一条评论。
    要开始审核、编辑及删除评论,请访问仪表盘的“评论”页面。
    评论者头像来自Gravatar