l

A.Y.

2022年6月19日

什么是重定向(Redirect)? 如何设置以及修复重定向问题?
l

A.Y.

2022年6月19日

重定向(Redirect)是一种将访客或搜索引擎从旧URL转发到新URL的过程.

举个最简单的例子, 输入 www.adamy.top 以及 adamy.top 都能够访问到Adam Y笔记, 你会发现无论是否带www, 最终都是跳转到 adamy.top.

从输入 www.adamy.top 到最后访问的是 adamy.top, 这就是重定向.

这只是结果, 关于怎么做, 有好几种方法, 往下看.

Adam Y.

为什么要使用重定向

重定向一般发生在转瞬间, 大多数时候访客没有刻意去留意他们的url地址栏的时候, 几乎意识不到重定向已经发生并且结束了.

 

1. 引导到主要网站版本

就像开篇的例子, 站长的设置会将来自www前缀的网站访问路径重定向到不带www的版本上.

另外, HTTP也会重定向到HTTPS上, 因为网站装了SSL安全证书, 这就起到一种引导作用.

延申知识:

是以安全为目标的 HTTP 通道, 在HTTP的基础上通过传输加密和身份认证保证了传输过程的安全性, 大部分网站都会采用HTTPS来加密保护访客信息隐私不被窃取.

2. 避免重复页面和内容

重定向一般常用于页面或博客文章:

如果网站建设周期长且断断续续, 时间长了难免会有一些功能/内容重复的网页, 此时经过对两个页面进行取舍后删去其中之一, 将这个删掉的URL重定向到留下来的页面中, 避免这个链接变成死链.

这一步是相当重要的, 我们不能随意删除页面, 否则这个被删除页面的链接会变成死链跳转到404页. 这会对网站SEO有影响.

对于一些大型的网站, 会有专业的写手团队来发布博客文章内容. 团队成员各写各的, 时间一长难免有重复/相似度很高的博文产生. 放任不管会对网站权重以及被搜索引擎负面评价. 因此网站管理员在删除文章时, 往往需要做对应的重定向跳转.

 

3. 内容过时以及更新

假设我有一篇2018年的文章, 地址链接是 adamy.top/article-2018, 我需要将里面的内容更新到2022年, 我可以在更新完内容后, 新建一个页面 article-2022, 并且对article-2018做重定向跳转.

 

4. 网站CMS或域名更换

当网站的内容管理系统(Content Management System)更换时, 比如从WordPress更换的其他的CMS中;

当域名更换时, 我们要做好每一个页面的重定向跳转, 而不是单纯的跳转到新域名的首页.

重定向的几种类型

简单讲讲重定向的几种类型, 不常用的直接一遍过即可, 切勿走火入魔浪费时间:

 

HTTP重定向

这是最常见最好用的重定向类型:

 

HTTP工作原理

  1. 访客输入网址或点击网站上的链接
  2. 访客的浏览器对网站所在服务器主机发出请求
  3. 服务器主机返回状态码, 如无意外返回 HTTP 200(状态OK码), 开始建立从浏览器到服务器主机的连接
  4. 如果服务器主机无法开始建立连接, 将视情况返回3xx、4xx或5xx的响应代码. 不同的代码表示不同的情况
  5. 如果连接成功, 浏览器到服务器主机的数据传输开始, 首先是HTML, 然后是JavaScript和CSS.
  6. 当浏览器下载完成页面的所有元素后, 将其转换为网页并显示给访客

原理就是这么个原理, 但是整个过程从开始到结束比你看完上述这段文字要快得多, 通常以毫秒计算. 如果感兴趣, 可以查看网页加载速度中的Waterfall部分, 在那里你可以形象生动地查看网页加载的过程.

 

HTTP重定向工作原理

在HTTP重定向的状态下, 服务器主机会在浏览器请求后发送3xx状态码. 这个代码会促使浏览器显示另外的页面, 并将用户重定向到这个新的URL地址.

3xx状态码通常有几种类型:

  • 301: URL永久移动到新地址
  • 302: URL暂时移动到新地址
  • 303: 响应其他页面的重定向
  • 304: 页面据上次访问后未修改过
  • 307: 临时性的重定向
  • 308: 永久性的重定向

一般来说, 常用的只有301和302重定向, 上面这些其他的状态码, 一般不需要深究

 

HTTP 301重定向

301永久重定向是最常用到的重定向策略, 也是对SEO有利的一种手法:

  1. 对SEO没有不利影响
  2. 原网页的关键词排名以及PR级别都会传递给新定向到的网页
  3. 重定向对于搜索引擎友好, 它告诉搜索引擎此页面已经永久性重定向, 避免了搜索引擎推荐错误页面的情况

当重定向是长期/永久性时, 应当使用301重定向, 它能给Google传递更强的规范化信号.

 

HTTP 302重定向

302临时重定向表示它是临时性更改资源时使用的重定向, 多用于页面改动建设或其他临时原因.

一般来说, 这种类型只用于临时情况, 且临时重定向不具备上述301重定向的任何优点.

 

HTML重定向

HTML重定向指的是网页html代码中的标签中包含了重定向指令.

 

HTML重定向工作原理

让我们回到上面的HTTP工作原理:

HTTP重定向通常发生在步骤4; 而HTML重定向则发生在步骤5

下载html代码→代码指示重定向→做跳转

一般来说只要站点速度够快, 和HTTP重定向一样, 访客可能不会意识到这是一次重定向.

但由于HTML重定向使用的是元刷新标签, 所以会有一些不足之处:

 

HTML重定向的缺点

  • 和HTTP 301重定向不同的是, HTML重定向不继承原网页的排名和优势
  • 搜索引擎展示的依然是未重定向前的页面
  • 对SEO不友好, 可能会遭到搜索引擎的惩罚

看这多么糟糕的缺点! 这就是为什么大部分博主只会告诉你301重定向这一种方式的原因, 因为其他的方式往往没有好结果.

基于以上缺点, 决定了这个知识点我们只要简单了解即可.

 

JavaScript重定向

花样真多, 脚本文件也可以重定向, 对吧…

顾名思义, JS重定向是通过Javascript文件来进行重定向跳转的.

 

JS重定向工作原理

由于重定向是通过js文件中的代码来进行, 让我们再次回到HTTP工作原理中:

也就是说, 在步骤5中加载了html代码后, 才轮到js脚本和代码的加载.

这同样决定了js重定向有以下缺点:

 

JS重定向的缺点

  • 同样不继承原网页的排名与优势
  • 搜索引擎可能会索引到错误的内容上
  • 如果用户/浏览器禁用了Javascript, 重定向将不起作用

关于HTML和JavaScript的重定向部分代码我不多做介绍, 因为这些缺点是SEOer所不能容忍的, 我们不会采取此类方式做重定向跳转.

如何对页面进行重定向

在这里我只推荐和介绍如何使用HTTP重定向:

 

WordPress网站

如果我们没有代码基础, 那么对于WP网站来说最简单的方法就是使用插件来实现功能, 比如: Redirection

 

Apache服务器

如果你使用的是Apache服务器, 那么直接在网站服务器根目录下的 .htaccess文件中添加一个新行, 具体如下:

重定向整个域名到新网站:

Redirect 301 / http://www.example.com/

重定向单个页面

Redirect 301 / http://www.example.com/newpage/

把网址修改成你想要重定向的域名/页面地址, 注意HTTP和HTTPS的不同, 建议你直接整个网址替换

这是较为简便的方法, 至于如何登录到网站根目录, 推荐使用WinSCP

常见的重定向错误及修复方法

重定向这东西经常被第三方网络服务商拿来唬老板, 所以在介绍方面花费的篇幅稍微长了些.

一般来说, 重定向错误多来自于网站操作者粗心大意

下面来看看哪些常见的重定向错误, 以及如何解决:

 

重定向嵌套

就像俄罗斯套娃一样, 输入一个地址被做多次重定向:

例如, 输入地址A, 地址A重定向到地址B, 结果您猜怎么着?
地址B也被设置了重定向到地址C…
本来访问地址A的人经过两次跳转来到了地址C
A >> C

不够形象?

访客访问的是 a.com/page1, 重定向到 a.com/page2

本来重定向应该到这里就完成任务停止了.

但结果 a.com/page2 这个页面本身也带重定向, 只能再做一次跳转, 从 a.com/page2 重定向到 a.com/page3

虽然最后用户依然能够来到地址page3, 但是每一次重定向都会增加服务器负载.

解决方法:
将 地址A 直接重定向到 地址C

 

重定向循环

这次不是套娃了, 变成有来有往, 礼尚往来, 好家伙!

两个页面之间互相设置了对方作为重定向跳转:

地址A 被设置为重定向到 地址B;
另一方面,
地址B 也被设置为重定向到 地址A

这下导致访客和搜索引擎都无法访问这两个地址, 取而代之的是重定向次数过多这样的经典错误.

解决方法:

这个决定权在你.
既然是冲突, 就意味着你可以保留任意一方的重定向, 也可以两个重定向都删除.
具体看页面重要性和功能决定.

 

滥用302临时重定向

有时候网站管理员不会意识到他们使用的是302重定向.

但是302重定向的使用对SEO是没有好处的, 而且滥用情况下对搜索引擎有很大的影响.

如果你想要重定向你的流量, 你应该注意重定向目的, 并且在合适情况下尽量使用301重定向.

 

重定向到其他状态码

比如4xx 或 5xx

我们不需要了解这其中的原理, 解释起来也很复杂, 我们只需要专注于让重定向成功实现即可

可以使用下面的工具来检测网站的重定向问题:

 

重定向到不相关的内容页

这属于内容管理范畴.

技术上来看这种操作不违规, 但是内容度不相关会让搜索引擎对页面做负面评价, 侧面影响权重: 因为不相关的内容会伤害访客的用户体验.

比如网站有两个产品页, 键盘产品页 & 鼠标产品页.
如果管理员只是单纯的把鼠标产品页重定向到键盘产品页, 这对于营销一点作用都没有, 反而还可能导致页面跳出率变高.

这不就是挂羊头卖狗肉嘛? 客户点击进入鼠标产品页你为什么要自作主张让它跳转到键盘产品页?