什么是301重定向?

重定向

重定向是将一个URL转发到另一个URL的过程。

什么是重定向?

重定向是一种将用户和搜索引擎发送到不同于他们最初请求的URL的方法。三种最常用的重定向是301、302和Meta Refresh。

重定向类型

  • 301,“永久移动” —建议用于SEO
  • 302,“找到”或“临时移动”
  • Meta Refresh

301永久移动

301重定向是一种永久重定向,它将90%至99%的链接权益(分级能力)传递到重定向页面。301指的是这种重定向类型的HTTP状态代码。在大多数情况下,301重定向是在网站上实施重定向的最佳方法。

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

Google的一些员工表示,在某些情况下301和302可能会被类似地对待,但是我们的证据表明,确保所有类型的搜索引擎和浏览器获得最大信誉的最安全方法是在永久重定向URL时使用301。互联网基于称为超文本传输协议(HTTP)的协议运行,该协议决定了URL的工作方式。它有两个主要版本:1.0和1.1。在第一版本中,302引用状态代码“临时移动”。在1.1版中将其更改为“找到”。

307临时移动(仅HTTP 1.1)

307重定向是302重定向的HTTP 1.1后续版本。尽管主要爬虫在某些情况下会将其视为302,但最好在几乎所有情况下都使用301。唯一的例外是当内容仅在临时(例如在维护期间)移动且服务器已被搜索引擎标识为与1.1兼容时。由于基本上不可能确定搜索引擎是否已将页面识别为兼容页面,因此通常最好对临时移动的内容使用302重定向。

Meta Refresh

Meta Refresh是一种在页面级别而不是服务器级别执行的重定向。它们通常较慢,因此不建议使用SEO技术。它们通常与五秒钟的倒计时相关联,文字为“如果五秒钟内您没有被重定向,请单击此处”。Meta Refresh确实会通过一些链接权益,但是由于可用性差和所通过的链接权益的损失,因此不建议将其作为SEO策略。

SEO最佳实践

通常将一个URL重定向到另一个URL。这样做时,必须遵循最佳实践,以保持SEO价值。

第一个常见示例是在一个简单的场景下发生的:需要永久重定向到另一个地址的URL。

redirect-illustration-1.gif?mtime = 20170104131455#asset:2291:url

有许多选项可以执行此操作,但是通常,301重定向对于用户和搜索引擎都是可取的。向301提供服务会向浏览器和搜索引擎机器人程序表明该页面已永久移动。搜索引擎将其解释为不仅意味着页面位置已更改,而且内容(或其更新版本)也可以在新的URL上找到。搜索引擎将承载从原始页面到新URL的任何链接权重,如下所示:

redirect-google-301.gif?mtime = 20170104131453#asset:2289:url

请注意,将页面从一个URL移到另一个URL时,搜索引擎将花费一些时间来发现301,对其进行识别,并将其以前的排名和信任归功于新页面。如果搜索引擎蜘蛛很少访问给定的网页,或者新的URL无法正确解析,则过程可能会长。

其他重定向选项(例如302和Meta Refresh )是较差的替代品,因为它们通常不会像301重定向那样通过排名和搜索引擎值。只有当网站管理员不希望将链接权益从旧页面传递到新页面时,这些重定向才是不错的选择。

当整个站点更改其域或内容从一个域移动到另一个域时,传输内容变得更加复杂。由于垃圾邮件发送者的滥用和搜索引擎的怀疑,域之间的301有时需要更多时间才能正确地进行分类和计数。有关移动网站的更多信息,请参阅实现SEO友好的域迁移:信息图。

301在Apache中重定向

问题:

当我们启动我们的第一个网站seospsa.cn时,它是托管在www.socengine.com/seo/上,而不是在其自己的域上。当最初的开发人员将seospsa.cn移至其专用服务器时,他们希望将其作为自己的域而不是socengine.com的子目录进行访问。他们需要访问者访问www.socengine.com/seo/中的所有内容,并将其重定向到www.seospsa.cn。重定向必须适应几个文件和文件夹名称的更改,并且必须进行301重定向才能对搜索引擎友好。他们还需要转发http://seospsa.cn,以达到美学目的并避免规范化错误。

解:

最简单的方法是添加301重定向到PHP代码,这些代码使用PHP的header函数支持seospsa.cn。然而,利用apache模块mod_rewrite的强大功能,开发人员意识到他们可以匹配整个文件夹的特定模式,并将它们重定向到新的url,而不必遍历每个PHP脚本。

安装:

为了使其正常工作,Web服务器需要安装apache模块mod_rewrite。

默认情况下,大多数apache安装都会安装mod_rewrite。SEOspsa的原始服务器运行Linux发行版FreeBSD,默认情况下包含mod_rewrite。要检查模块是否已安装,开发人员可以通过将以下行添加到apache配置文件或适用的.htaccess文件来验证模块是否正常工作:

RewriteEngine开

Context

mod_rewrite模块在每个服务器上下文或每个目录上下文中运行。

每个服务器的上下文要求开发人员必须编辑apache配置文件httpd.conf。每个目录的上下文使用用户要配置的每个文件夹中存在的.htaccess文件。如果网站管理员无法访问httpd.conf,则他们将不得不使用.htaccess文件。

正则表达式(aka正则表达式)

来自Wikipedia.org:

正则表达式是根据某些语法规则描述或匹配一组字符串的字符串。正则表达式被许多文本编辑器和实用程序用于根据特定模式搜索和操作文本体。

对于程序员和系统管理员来说,正则表达式是一项很有价值的技能。要根据本文中的示例重定向url,了解使用regex的基础知识非常重要。以下是本文档中描述的正则表达式中使用的字符和运算符的列表:

  • 。句点–匹配任何内容
  • *星号-匹配零个或多个前面的字符
  • +加号-匹配一个或多个前面的字符
  • ()括号-将值括在括号中将存储匹配的内容,以供以后使用;这也称为反向引用
  • (value1 | value2)–用圆括号将两个或多个值括起来并用竖线字符分隔,这相当于说:“匹配value1或value2”

将特定文件和文件夹从一个域重定向到另一个域

原始开发人员需要从旧服务器重定向到保留文件名的新服务器。

重定向:http:// www.socengine.com/seo/ s …至:/somefile.php

将以下指令添加到socengine.com服务器上的适用文件中:

重定向匹配301 /seo/(.*)/ $ 1

说明

正则表达式/seo/(*)告诉apache匹配seo文件夹,后跟零个或多个字符。括号中的*告诉apache将匹配的字符串保存为反向引用。在本例中,这个反向引用放在指向$1的URL的末尾。

重定向规范主机名

原始开发人员需要重定向所有不以www.seospsa.cn开头的请求,以确保它们包括www。他们这样做不仅是因为看起来更好,而且是为了避免常见的规范化错误。

重定向:
http: //seospsa.cn/至:http:// www.seospsa.cn /

重定向:
http: //mail.seospsa.cn/至:http:// www.seospsa.cn

重定向:http
: www.seospsa.cn/somefile …

http:// ##### replaceparse27 #### … class =“ bottom0”>解决方案

添加以下指令:

<pre> RewriteCond%{HTTP_HOST} *!^ www * .seospsa .org [NC] RewriteRule(。*)http://www.seospsa.cn/http://www.seospsa.cn/$1 [L, R = 301] </ pre>

说明

该指令告诉apache检查访问者正在访问的主机,如果不等于www.seospsa.cn,则重定向到www.seospsa.cn。www.seospsa.cn前面的感叹号(!)取消了比较,并说:“如果主机不是www.seospsa.cn,则执行RewriteRule。” 在我们的例子中,RewriteRule将它们重定向到www.seospsa.cn,同时保留它们在向后引用中访问的确切文件。

在不保留文件名的情况下重定向

旧服务器上存在的几个文件在新服务器上不再存在。旧文件需要重定向到新域的根URL,而不是保留重定向中的文件名(这将导致在新服务器上出现404 not found错误)。

重定向:http:// www.socengine.com/seo/ s …
收件人:http:// www.seospsa.cn /

解:

添加以下指令:

<pre> RedirectMatch 301 /seo/someoldfile.php http://www.seospsa.cn </ pre&… class =“ bottom0”>解释:

省略任何括号,对/seo/someoldfile.php的所有请求都应该重定向到

​重定向GET字符串

一些PHP脚本具有不同的名称,但GET字符串保持不变。开发人员需要在保留这些GET字符串的同时将访问者重定向到新的PHP脚本。GET字符串是URL中文件名之后的一组字符,用于将数据传递到网页。在URL中的GET字符串的一个例子/myfile.php?this=that&foo=bar是?this=that&foo=bar.

重定向:http:// www.socengine.com/seo/ c …
收件人:http:// ##### replaceparse37 #### … class =“ bottom0”>解决方案:

添加以下指令:

<pre> RedirectMatch 301 /seo/categorydetail.php(.*)http://www.seospsa.cn/artcat.p … class =“ bottom0”>解释:

正则表达式(。*)再次告诉apache匹配任何零个或多个字符,并将其保存为后向引用$ 1。由于/seo/categorydetail.php之后有一个$ 1,它将立即将get字符串重定向到这个新的PHP文件。

更改文件扩展名时重定向

在原始方案中,旧服务器上有一个混合HTML和PHP的文件文件夹。在新服务器上,这些文件都是PHP,并且需要重定向逻辑才能将旧的URL更改为此新扩展名。

重定向:http:// www.socengine.com/seo/ g …
收件人:http:// www.seospsa.cn / articles …

重定向:http:// www.socengine.com/seo/ g …
收件人:http:// ##### replaceparse41 #### … class =“ bottom0”>解决方案:

添加以下指令:

<pre> RedirectMatch 301 /seo/guide/(.*).(php|html)http://www.seospsa.cn/articles … class =“ bottom0”>解释:

(*.)匹配任何字符中的零个或多个,并将其保存为后引用$1。(php | html)告诉apache匹配后跟“php”或“html”的句点,并将其保存为后引用$2(尽管在本例中未使用)。注意带反斜杠的转义句点。这是为了确保apache不会将句点解释为“任何字符”的意思,而是将其解释为实际的句点。将“php”和“html”括在圆括号中,并用一个管道“|”字符将它们分隔,意味着匹配其中一个值。所以如果说(php | html | css | js | jpg | gif),regex将匹配任何扩展名为php、html、css、js、jpg或gif的文件。

结论

通过利用mod_rewrite和一些正则表达式的强大功能,原始开发人员开发了一套用于重定向网页的简单规则。通过使用301重定向,他们以对搜索引擎友好的方式进行了此操作。

[原创文章] 发布者:seospsa,转载抄袭请注明本站链接:http://www.spsa.cn/2156.html

发表评论

登录后才能评论

评论列表(1条)