我们搬家了!看看我们的新网站!< / >我会尝试实现不同的重定向方法,因为不是每个机器人或搜索引擎都会支持加密重定向。
临时重定向
临时重定向表示资源已临时移动到新位置。
您应该在以下情况下使用临时重定向:
希望将用户重定向到适合他们的网站版本(基于位置/语言)。
想要对网页的功能或设计进行A/B分离测试。
运行一个促销活动,并希望将访问者临时重定向到一个销售页面。
临时重定向是规范化的一个弱提示,即来自页面(如链接)的信号应该向前整合到新页面。因为这是一个微弱的信号,大多数时候这些信号实际上会合并到被重定向的原始页面。
然而,在某些时候,可能会产生足够的信号,表明临时重定向确实巩固了前进。有一段时间,您可能会看到原始URL在谷歌中被索引,信号在那里被合并,但如果发生这种交换,那么您将在谷歌中看到新的URL,而信号将在那里合并。
在谷歌开始将临时重定向视为永久重定向之前,不需要设置临时重定向存在的时间。通常是几周到几个月,但也可能是几天、几周或几个月。
这种交换可能永远不会发生,就像302被用来在国际网站上将用户重定向到与其主页最相关的版本一样。这种设置已经被许多网站使用了近十年,他们仍然有原始的url索引。
在某些情况下,谷歌甚至似乎从一开始就将临时重定向视为永久重定向。
例如,我进行了一个实验,我将一个已建立的站点重定向到另一个站点。当谷歌看到重定向时,它从搜索结果中删除旧域名,以支持“新”域名。
如果您不确定谷歌如何处理您的临时重定向,请将重定向的URL粘贴到搜索控制台的URL检查工具中。如果它显示“URL不在谷歌上”警告,谷歌必须将重定向视为永久重定向。如果它在谷歌上,谷歌就会把它当作临时的。
在执行此操作时,请确保检查最后一次抓取日期。如果这个日期是在你添加了重定向之后,请求重新索引,然后再回来。
旁注。当重定向到已建立的页面或站点时,谷歌似乎更快地将临时重定向视为永久重定向。这可能是因为新页面或网站已经存在一段时间了,所以很有可能你想永久重定向URL。
让我们看一下临时重定向的一些类型。
HTTP 302
302重定向将用户转发到新的URL,并告诉搜索引擎该资源已暂时移动。
HTTP 307
307重定向与302重定向相同,只是在执行重定向时保留了原始请求的HTTP方法(POST、GET)。对于SEO来说也是一样,但是如果要通过重定向的表单发送数据,那么就不希望在GET和POST之间进行切换。
值得注意的是,在排除重定向问题时,您可能会看到不同版本的307,这是浏览器中发生的缓存重定向。这与HSTS相关,并告诉浏览器在请求不安全的资源时切换到安全连接(HTTPS)。
当web服务器要求客户端只使用HTTPS连接(HSTS策略)时,谷歌将看不到307,因为它缓存在浏览器中。初始命中(没有缓存)将有一个服务器响应代码,可能是301或302。但是对于后续请求,浏览器会显示307,这使得故障排除更加困难。您需要使用一个新的隐身会话来查看返回的状态码。
HTTP 303
303重定向将用户转发到与请求的资源相似的资源,这是一种临时重定向形式。它通常用于防止用户在浏览器中点击“返回”按钮时重新提交表单。你通常不会看到303重定向用于SEO目的,但如果你这样做,那么它将被视为302/307。
Meta刷新(>0秒)
当元刷新等于0秒时,它被视为永久重定向,当它大于0秒时,它被视为临时重定向。
元刷新重定向告诉浏览器在设定的秒数后重定向用户。它发生在浏览器中,是客户端。
元刷新重定向需要在HTML的
部分。这是它们的样子:HTTP刷新(>0秒)
当HTTP刷新等于0秒时,它被视为永久重定向,当它大于0秒时,它被视为临时重定向。
HTTP刷新类似于元刷新,但它发生在HTTP报头响应中。它可以在服务器端实现,但实际上是在客户端触发。
它看起来是这样的:
刷新:5;url = https://example.com/new-page
服务器端重定向
服务器端重定向是服务器在请求页面时决定将用户或搜索引擎重定向到何处的重定向。它们通常具有相应的状态码301、302、303、307或308。
服务器端重定向是进行SEO重定向的首选方法。
服务器级
这些是发生在您的服务器上的重定向。如何实现它们取决于您的网站主机以及后端使用的服务器环境或脚本语言。任何常见类型的服务器都应该有良好的文档记录。最常见的是Nginx, Apache, Cloudflare Server, LiteSpeed, Microsoft-IIS和Node.js。
如果你在WordPress、Shopify、Wix、Squarespace、Joomla或Drupal等CMS上的插件或自定义重定向解决方案中输入重定向,那么重定向是在服务器级别添加的。
大多数WordPress安装将运行Apache,用于重定向的插件实际上是编辑网站的。htaccess文件。你会在你网站的根目录中找到这个文件。
旁注。如果在站点的根目录中没有看到这个文件,要么是您的服务器没有在Apache上运行,要么是您没有这个文件,要么是它被隐藏了。您可以使用此工具检查正在运行的服务器类型。如果是Apache,解决方案是创建一个.htaccess文件并将其上传到根服务器。如果你正在运行Nginx,请阅读本文。如果您正在运行Windows/IIS,请阅读本文。
要在。htaccess中创建从一个页面到另一个页面的重定向,你需要添加:
重定向308 “/old“ “https://example.com/new”
您还可以使用不同的语言(如PHP)进行重定向。这是它的样子:
header(‘HTTP/1.1 308永久移动’);
头(地点:https://www.example.com/newurl);
退出();
在我们的文章中有很多关于301重定向的例子,包括重定向域名,www到非www,非www到www, HTTP到HTTPS,重定向也可以位于服务器配置文件中。
在许多常见的系统中,您只需输入一个重定向,它就会自动启动。然而,有些系统可以作为错误捕获器。你可以添加一个重定向,它不会触发,直到你删除旧的页面。这在过程中增加了一个额外的步骤,但不容易出错。
dns级别
您的域名服务器通常由您的域名注册商或CDN管理。每个提供程序略有不同,但它们通常都有您可以找到的文档。
此级别的重定向通常用于网站迁移。有些主机可能允许您指定重定向的状态码,例如301或302。
一些提供商甚至允许重定向HTTPS版本的页面。从技术上讲,HTTPS不存在于这个级别,这在过去也不是一个选择,但一些提供商已经找到了一种方法来实现这一点。
CDN-level
许多cdn有多个实现重定向的选项。例如,在Cloudflare上,你可以做单个或批量重定向,有特定的重定向规则,你可以写一个重定向的页面规则,你可以使用工作者和键值对来实现重定向,或者你可以使用工作者来修改标题并添加重定向。
我通常更喜欢在边缘(cdn级别)进行重定向,而不是在服务器上进行重定向。对于其他人,我总是建议使用对您来说最容易实现的方法。对于许多人来说,这是服务器级重定向。
客户端重定向
客户端重定向由用户的浏览器触发。在重定向发生之前,用户可能会暂时看到一个页面。
通常不应该在客户端进行重定向,除非这是唯一的选择。
超文本标记语言
我们已经讨论过元刷新重定向和JavaScript重定向。这些是在客户端启动的。
元刷新重定向需要在HTML的
部分。这是它们的样子:下面是JavaScript重定向在HTML中的样子:
< >脚本
//重定向到一个新的URL
Window.location.href = “https://example.com/new-page“;
> < /脚本
HTTP报头响应
HTTP刷新类似于元刷新,但它发生在HTTP报头响应中。它可以在服务器端实现,但实际上是在客户端触发。
它看起来是这样的:
刷新:5;url = https://example.com/new-page
cdn水平(在特定情况下)
我之前谈到了Cloudflare员工。这些工具可以让您在向用户提供服务之前编辑边缘内容。实际上,您可以重新编写一些HTML以添加客户端重定向(如元刷新),但这并不常见,因为有更好的方法可以做到这一点。
重定向的最佳实践
这里有一些你需要检查的与重定向相关的项目。
将HTTP重定向到HTTPS
每个人都应该使用HTTPS。
有几种方法可以检查您的站点是否正确地从HTTP重定向到HTTPS。首先是安装并激活Ahrefs的SEO工具栏,然后尝试导航到您的主页的HTTP版本。它应该重定向。
您通常希望在这里看到301或308重定向,因为此重定向应该是永久性的。
但是,如果您的网站像我们对Ahrefs那样使用HSTS,您可能会看到307重定向。
这种类型的307在浏览器中触发,您仍然需要检查服务器响应以确保它是301或308。
这是另一种方法:
去Ahrefs网站审核
点击+新建项目
手动单击“添加”
将Scope更改为HTTP
输入您的域名
你应该看到主页的www和非www版本都显示“不可抓取”错误,以及“301永久移动”通知。
使用HSTS(创建307重定向)
在您的服务器上实现HSTS (HTTP严格传输安全)可以阻止人们访问您站点上的不安全(HTTP)内容。它通过告诉浏览器,您的服务器只接受安全连接,并且浏览器应该307重定向到请求访问的任何HTTP资源的HTTPS版本来实现这一点。
请记住,这发生在浏览器中。机器人不会看到这个特定版本的307。
进一步的阅读
严格-传输-安全- Mozilla
在实现HSTS之后,考虑将您的站点提交到HSTS预加载列表。这使得每个试图访问您的网站的人都可以使用HSTS,即使他们以前没有访问过它。
重定向相关的旧内容
总的来说,网站和网络总是在变化。我们进行了一项研究,发现在我们观察的9年期间,大约三分之二的网页链接消失了。
在许多情况下,您的旧url有来自其他网站的链接。如果它们没有重定向到当前页面,那么这些链接就会丢失,不再对您的页面有效。现在做这些重定向还为时不晚,你可以迅速收回任何失去的价值,并帮助你的内容排名更高。
以下是如何找到这些机会的方法:
将您的域名粘贴到站点浏览器(也可以在Ahrefs网站管理员工具中免费获得)
进入最佳链接报告
添加一个“404未找到”HTTP响应过滤器
我通常按“引用域名”分类
我甚至创建了一个脚本来帮助你匹配重定向。不要被吓跑;你只需要下载几个文件并上传它们。Colab笔记本会带你走过这一关,并为你处理繁重的工作。
避免长重定向链
重定向链是指在请求的资源与其最终目的地之间发生多个重定向。
谷歌的官方文档说Googlebot跟踪多达10个重定向跳,所以任何短于此的重定向链通常对SEO来说都不是问题。他们在一个回合中跳了5次,并将在下一个回合中继续他们离开的地方。
如果爬虫在10跳内没有收到内容,搜索控制台将在网站的索引覆盖报告中显示重定向错误。
许多seo都痴迷于摆脱一个额外的跳转重定向。我一点也不担心这个。
我通常不担心重定向链,如果他们少于5跳,但5之后,我看到他们被爬行和计数正确的问题,所以这是我建议人们开始工作的切断。
你可以使用Ahrefs网站管理员工具免费找到长重定向链:
使用站点审计抓取您的站点
转到Redirects报告
单击“问题”选项卡
查找“重定向链太长”错误
点击该问题并点击“查看受影响的url”,查看开始重定向链的url以及链中的所有url。
避免重定向循环
重定向循环是重定向的无限循环,当URL重定向到自身或重定向链中的URL重定向回链中较早的URL时发生。
它们存在问题的原因有三个:
对于用户——他们切断了对预期资源的访问,并在浏览器中触发“过多重定向”错误。
对于机器人和搜索引擎——它们“诱捕”爬虫,浪费爬虫预算。
对于服务器——它们浪费你的资源。有些机器人可以很好地处理这个问题,有些则不行。他们可能会通过持续的DDoS攻击让你的服务器瘫痪。
寻找重定向循环最简单的方法是使用Ahrefs网站审计之类的工具抓取你的网站。您可以使用Ahrefs网站管理员工具帐户免费完成此操作。
使用站点审计抓取您的站点
转到Redirects报告
单击“问题”选项卡
查找“Redirect loop”错误
如果你点击错误并点击“查看受影响的url”,你会看到一个重定向的url列表,以及链中的所有url:
修复重定向循环的最佳方法取决于链中的最后一个URL(在循环之前)是否是预期的最终目的地。
如果是,则从最终URL中删除重定向。然后确保资源是可访问的,并返回一个200状态码。
如果不是,则将循环重定向更改为预期的最终目的地。
在这两种情况下,最好将所有指向剩余重定向的内部链接替换为指向最终URL的直接链接。
避免过于宽泛的重定向
在创建重定向规则时,有时人们会匹配文件夹之后的所有内容。这就造成了一堆页面可能被重定向到单个页面的情况。您希望尽可能以1:1的比例匹配重定向。
您可以通过输入domain.com/asfkljlkdfs或类似的东西来测试这一点。您可能也想尝试一些主文件夹。如果您收到一个404页面,那么没关系。如果它重定向,那么某人的规则过于宽泛。
这些规则不一定有害,但它们可能会将用户带到意想不到的地方。在某些情况下,它可能是有害的。假设你通过黑客添加了一堆页面,黑客建立了到这些页面的链接。如果你删除这些页面,然后将它们重定向到某个地方,你基本上是在说这些垃圾链接属于你。
注意过期的证书
如果您迁移到另一个域,并且您的旧站点使用HTTPS,那么证书将过期,机器人将通过,但用户将收到错误消息,并且不会重定向。
有涵盖多个站点的多域证书可以帮助防止此问题。一些DNS提供商现在也允许HTTPS重定向,这将防止这种情况发生。
保持重定向至少1年
根据谷歌,您应该保持重定向至少活跃一年。在那之后,信号应该永久通过。
https://twitter.com/methode/status/1417920011071537153
如果你不相信,我测试过了,它似乎是真的。
我喜欢尽可能长时间地保留重定向,甚至可能永远保留。在删除任何重定向之前,您还应该检查用户是否仍在访问旧页面。
不要忘记在迁移过程中重定向其他文件
在进行迁移时,重定向图像和pdf之类的东西是一个好主意,而不仅仅是页面。特别是如果这些为你的网站带来了大量的流量。不要担心JS、CSS或字体文件之类的东西。专注于重定向被搜索引擎索引的内容,而不用担心其他文件类型。
搜索引擎优化重定向故障排除
这里有一些提示可以帮助您解决重定向问题。
找出重定向在哪个系统中
在企业环境中,事情可能会变得复杂。您可能有多个不同的系统,在这些系统中可以输入重定向,您可能需要弄清楚哪个系统实际触发了重定向。
您可以使用HTTP标头中的信息来帮助确定哪个系统可能触发了重定向。例如,在我们的博客上,我们使用一个名为“重定向”的插件。它添加了一个标头标记x - redirects -by,以标识它是触发重定向的那个,如下面的Site Audit的URL概述所示。
我们的搜索引擎优化工具栏是另一个选项的快速标题检查,而你正在浏览。
重定向可能只发生在特定的用户代理上
重定向可以使用条件逻辑,这意味着它们只会在特定条件下发生,比如对于指定的用户代理。您可以使用我们的SEO工具栏更改用户代理,以查看是否为特定用户代理触发了重定向。
重定向会抛出错误的状态码
不要盲目地相信显示的状态码。任何状态码都可能发生重定向。您可能有一个页面显示为200 OK状态码,但实际上仍然重定向到另一个位置。
最终的想法
当涉及到可以为批量URL重定向匹配的模式时,正则表达式将节省大量时间。谷歌指南或小抄,并找到一个好的正则表达式测试器。我通常使用regex101。
有问题吗?在X或LinkedIn上给我发信息。