重定向:301、302、307 | 301操作指南

什么是重定向?


重定向是一种将用户转发到与其最初单击的URL不同的URL的方法。 下面列出了一些最常见的重定向类型。

如何执行301重定向

301永久移动


301重定向是一种永久重定向,它将90%至99%的链接资产(分级能力)传递到重定向的页面。 301表示页面已移至另一个URL,旧的URL已过时。

找到302(HTTP 1.1)/临时移动(HTTP 1.0)


302是一个临时重定向,传递的链接资产为0%,在大多数情况下不应使用。
到目前为止,互联网运行在HTTP协议上,该协议规定了URL的工作方式。 在此协议的两个版本中,HTTP响应状态代码不同:

  • HTTP 1.0:302状态代码为“暂时移动”-当前页面已临时移动到另一个URL。
  • HTTP 1.1:描述短语已更改为“找到”-已找到当前页面。

307临时移动(仅HTTP 1.1)


307重定向是302重定向的HTTP 1.1后续版本。 尽管主要爬虫在某些情况下会将其视为302,但最好在几乎所有情况下都使用301。 唯一的例外是当内容仅真正临时移动时(例如在维护期间),并且搜索引擎已将服务器标识为与1.1兼容。

由于基本上不可能确定搜索引擎是否已将页面识别为兼容页面,因此通常最好对临时移动的内容使用302重定向。

其他重定向类型


重定向还有其他一些类型:元刷新或JavaScript重定向在页面级别而不是在Web服务器级别执行。 这是典型的Meta Refresh重定向的样子:

<meta http-equiv="refresh" content="2;url=http://example.com/" /> 

最好不要使用这些重定向类型,因为垃圾邮件发送者和门禁页面经常使用它们。 此外,它们几乎没有通过任何链接

使用重定向的示例


将您的域重定向到非www URL:

 RewriteCond %{HTTP_HOST} ^www.site\.com$ [NC] RewriteRule ^(.*)$ http://site.com/$1 [R=301,L] 

将您的域重定向到www URL:

 RewriteCond %{HTTP_HOST} ^site\.com$ [NC] RewriteRule ^(.*)$ http://www.site.com/$1 [R=301,L] 

要选择规范的URL,请考虑:

  • 在SERP中哪个URL排名更高;
  • 哪个网址在索引中更具代表性。

将您的域重定向到URL而不加斜杠

开发网站时,选择是否要在链接中添加斜杠非常重要,因为搜索引擎会考虑链接
-www.site.com/cat1

-www.site.com/cat1
有所不同。 然后,您必须添加以下代码:

要从网址中删除斜杠:

 RewriteCond %{HTTP_HOST} (.*) RewriteCond %{REQUEST_URI} /$ [NC] RewriteRule ^(.*)(/)$ $1 [L,R=301] 

要将斜杠添加到URL:

 RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_URI} !(.*)/$ RewriteRule ^(.*[^/])$ $1/ [L,R=301] 

要将用户从一个页面重定向到另一页面:

 Redirect 301 /oldpage.html http://www.site.com/newpage.html 

重定向主页重复项

这段代码确保了如果存在指向主页的直接链接的多个版本(索引等),它们都将重定向到规范的主页:

 RewriteCond %{THE_REQUEST} ^[AZ]{3,9}\ /([^/]+/)*(default|index|main)\.(html|php|htm)\ HTTP/ [NC] RewriteRule ^(([^/]+/)*)(default|main|index)\.(html|php|htm)$ http://www.site.com/$1 [L,R=301] 

重定向目录

如果URL反映目录的结构,则目录中的更改将导致URL的更改。 在这种情况下,请使用以下重定向:

 RewriteRule ^(.*)/old-catalog/(.*)$ $1/new-catalog/$2 [R=301,L] 

但是,如果先前目录的URL在域名之后: www.site.com/old-catalog ,请使用以下代码:

 RewriteRule old-catalog /(.*) / old-catalog /$1 [R=301,L] 

如果您已切换平台或CMS,但仅URL扩展名已更改,请使用以下重定向:

 RedirectMatch 301 (.*)\.php$ http://www.site.com$1.html 

使用重定向避免重复页面的示例

重定向(子)域

如果您购买了具有多个TLD的多个域,或者使用了一个子域来开发新网站,却忘记了阻止它被搜索引擎索引。 无论哪种方式,您都必须设置重定向到根域:

 RewriteCond %{HTTP_HOST} !^www\.site\.com RewriteRule ^(.*)$ http://www.site.com/$1 [R=301,L] 

这样,所有(子)域(如www.site.orgwww.site.net ,test.site.com)都将重定向到www.site.com

从网址中删除多个斜杠/连字符

有时,用户可能会不小心输入多个斜杠,例如www.site.com/catalog/////page-1.html 。 在这种情况下,您必须将301重定向设置为带有一个斜杠的页面www.site.com/catalog/page-1.html

 RewriteCond %{REQUEST_URI} ^(.*)//(.*)$ RewriteRule . %1/%2 [R=301,L] 

以相同的方式,您可以设置从具有多个连字符的URL(例如, www.site.com/catalog/page---1.html )到www.site.com/catalog/page-1的重定向。 html

 RewriteCond %{REQUEST_URI} ^(.*)--(.*)$ RewriteRule . %1-%2 [R=301,L] 

从任何URL重定向到小写URL

搜索引擎会注意到字母的大小写,因此最好将您的URL小写。 如果您没有考虑到这一点来开发网站,则可以使用以下PHP脚本:

 $lowerURI=strtolower($_SERVER['REQUEST_URI']); if($_SERVER['REQUEST_URI']!=$lowerURI) { header("HTTP/1.1 301 Moved Permanently"); header("Location: http://" . $_SERVER['HTTP_HOST'] . $lowerURI); exit(); } 

如何将您的网站移至新域? 301重定向的最佳策略

根据最受欢迎的搜索引擎,转移到新域的最佳策略是:

  • 安装从旧站点到新站点的逐页301重定向;
  • 不要设置从robots.txt的重定向-而是将Host指令添加到新域中。

在这种情况下,以前网站上的代码必须看起来像这样:

 RewriteCond %{REQUEST_FILENAME} robots.txt$ [NC] RewriteRule ^([^/]+) $1 [L] RewriteCond %{HTTP_HOST} !^www\.site\.com RewriteRule ^(.*)$ http://www.site.com/$1 [R=301,L]   robots.txt   : User-agent: Yandex Disallow: Host: newsite.com 

产生301重新导向


如果您不是特别精通技术,则可以使用在线服务来生成基本重定向:

http://www.webconfs.com/htaccess-redirect-generator.php
http://www.rapidtables.com/web/tools/redirect-generator.htm
只需输入您的数据并获取用于域,目录和URL之间重定向的代码。

如何测试301重定向


301重定向中的每一项更改都需要测试网站的性能:

  • 是否有效(请检查主页);
  • 浏览网站的主要部分和网页。

301重定向VS Canonical-何时使用哪个?


除了一些小细节,为了理解我们到底想说什么,Google提供了一些明确的规则。 简单来说,这就是搜索引擎理解我们命令的方式:

301 :好吧,谷歌(或任何其他搜索引擎),我的页面已经不存在了,并且已经永久地移到了新的URL。 请从索引中删除旧链接,然后将链接源传递给新页面。

规范 :好的,谷歌,我在同一个页面上有多个版本(或其内容),因此,请仅对规范版本进行索引。 我将保留其他版本供人们查看,但请不要为它们建立索引,并将链接源传递到规范页面。

什么时候使用301重定向更好?


  • 默认情况下,这是首选方法。
  • 对于已永久移动的页面或更改其URL的页面;
  • 对于域,如果您已将网站移至新域;
  • 404页。 例如,如果某个产品已从目录中删除,则可以设置重定向到包含类似产品的页面或产品类别的URL。

什么时候使用rel =“ canonical”更好?


  • 如果您无法设置301重定向,否则将不会节省时间;
  • 对于重复的内容,如果要保留两个版本(例如,具有不同衣服尺寸的页面);
  • 当您有多个URL指向同一页面(目录类别,用于跟踪会员链接流量的页面等)时;
  • 对于跨域资源共享,如果要在具有不同来源(例如域)的页面之间传输数据。

总结一下

两种解决方案都通过了链接,而且Google均对它们进行了排名。 不过,301重定向更可取。

重定向错误


  • 重定向链(避免使它们最大化网站的速度和链接流);
  • 使用错误的重定向类型(要做出正确的决定,您必须考虑所有细节);
  • 设置内部重定向而不重写链接的URL。 您必须确保您网站上的链接不会导致带有重定向的页面;
  • 重定向到不相关的页面/内容。 您的链接应始终指向相似的页面,或指向包含所请求页面的网站部分;
  • rel = canonical或301 direct的错误选择(请参见上文);
  • 重定向robots.txt(最好添加Host指令);
  • 任何重定向都不会导致状态代码为200的页面(每个链接都应导致状态响应为200的正常工作页面。否则,请不要使搜寻器感到困惑,仅显示404错误页面)。

希望本301指南将成为您的备忘单,并将帮助您在网站上使用301重定向。

如果您有任何疑问,请在下面提问。 我会尽力为您服务!

另请阅读:
必要的现场SEO因素

Source: https://habr.com/ru/post/zh-CN458108/


All Articles