详细的301介绍 网站重定向大解析

在SEO优化中,301重定向是一个经常使用的功能,主要的目的就是在网站改版,或者是网站更换域名的时候能够不影响用户对网站的访问,对搜索引擎友好并且同时能够将老域名的权重慢慢的转移到新域名中。那么既然这样的话我们就可以放心的使用这顶知识,同时老站也是可以使用301重定向到新站的。

cdx301-y6esa2o7og-1.jpg

本文来源于A5营销,木木seo在此基础上补充了一下,下面一起来看看:

一、301重定向的作用

301重定向的作用有很多,平时站长在做301重定向的时候,一是为了URL规范化并集中权重不让权重分散、二是为了网站改版,将旧版本的页面的所有指标全部转移到新版本的页面上。

从搜索引擎优化角度出发,301重定向是网址重定向最为可行的一种办法。当网站的域名发生变更后,搜索引擎只对新网址进行索引,同时又会把旧地址下原有的外部链接如数转移到新地址下,从而不会让网站的排名因为网址变更而收到丝毫影响。同样,在使用301永久性重定向命令让多个域名指向网站主域时,亦不会对网站的排名产生任何负面影响。

所以301重定向对SEO无任何不好的影响,而且网页A的权值会传达给网页B,网站更换了域名,表示本网页永久性转移到另一个地址,对于搜索引擎优化来说,给搜索引擎一个友好的信息,告诉它此页面已永久重定向,避免搜索引擎找不到页面,301永久重定向是所有的重定向方法中唯一符合搜索引擎规则的重定向方法,其他的重定向还包括302暂时重定向和JS跳转等,这些方式都容易导致URL不规范问题的产生。

二、在什么情况下必须做301重定向

以下五种情况是必须要做301重定向的,如果这五种情况都没有发生的话可以选择不做,下面A5营销详细的介绍一下。

①:网站的旧内容过期并被删除掉

网站的一些内容过期了,所以要被删掉了,如果还想留着可以通过重定向实现。

②:网站有一些具有链接和流量的无效URL

如果你发现这些无效的URL还有流量权重,可以通过重定向重新生成页面。

③:网站更换了主机托管公司

如果网站更换了主机托管公司,不影响用户查找网站内容的任何URL的情况下,可以不需要做重定向。

④:网站更换程序

网站进行较大的改版,网站程序需要更换,此时会影响很多URL,可以通过重定向来解决。

⑤:网站实施URL规范化

网站默认的URL分:

1、abc.com

2、www.abc.com

3、abc.com/index.html

4、www.abc.com/index.html

为了进行规范化只出现一个标准的URL,可以通过重定向实现,可以将其他三个重定向到www.abc.com上。

⑥:网站因为各种原因而改变现有内容的URL

注意:并不是所有情况都是需要做重定向的,但是,任何URL的更改都是需要做重定向的。

三、做301重定向的注意事项

当重定向实施完之后,旧版本页面跳转到了新版本页面,或网址规范化了再或者其他的,部分站长不会注意到HTTP状态是否返回成功,就在此时,可能有些重定向不传递状态或者出现错误的状态码。

例如:404错误(页面未找到)或者200(页面成功加载)

正确的状态码:

cdx301-1eefa57006-2.png

错误的状态码:

cdx301-1eefa57006-3.png

如果遇到这种情况也是一个问题,所以要避免这样的问题发生。如果站长在做301永久重定向后,一定要确保HTTP状态是返回,而不是返回200或404再或者是其他的。

另外木木seo补充一点:不要把被K的网站往正常网站去重定向,这样可能导致正常的网站也被降权。

四、301永久重定向后权重会不会叠加

301永久重定向后权重会不会叠加呢?很多站长都在考虑这个问题,部分站长想通过这种途径来投机取巧。A5营销认为,301永久重定向后权重是可以叠加的,但权重不会相加。那么,什么样的网站做301重定向权重是可以叠加的,什么样的网站做301重定向权重是不能叠加的?下面详细的说明一下。

①:两个相同的网站做301重定向是可以叠加权重的,但权重不是全部转移过来,而且要看站点符不符规则,一般来说权重再转移的时候会损失一部分。

②:两个不相同的网站做301重定向是不可以叠加权重的,为什么呢?如果两个网站一点也不相同,权重不仅不会转移过来,而且百度也不愿意这么做,所以两个不相同的网站没法传递权重和叠加权重。

五、301重定向和302重定向的区别

重定向的方法其实是有很多的,但不同的方法会出现不同的结果,而且区别也是很大的。目前,根据WEB服务器返回给浏览器的HTTP状态码,重定向主要可以分为好和坏两类,好的一类是301永久重定向、坏的一类是301临时重定向。

①:301永久重定向(好)

首先,301永久重定向。这个状态码告诉用户、搜索引擎、浏览器,该资源已经永久性的移动到另一个位置(旧版本页面永久重定向到新版本页面),而且没有恢复原位的打算。

②:302临时重定向(坏)

然后,302临时重定向。这个状态码告诉用户、搜索引擎、浏览器,该资源已经暂时性的移动到另外一个位置(旧版本页面临时重定向到新版本页面),这种移动不会当作永久性,而且会恢复原来的位置。

注意:两种形式的重定向都会将用户、搜索引擎发送到新的位置(页面),但搜索引擎对待这两个HTTP状态码却不同。当搜索引擎看到301状态码的时候,会判断旧版本页面将权重或任何其他的指标永久转移到新页面。当搜索引擎看到302HTTP状态码的时候,会假设它不应该将旧页面的历史链接跟权重转移到新的页面,意思是转移后还是转移回来的。另外,301永久重定向会导致搜索引擎从索引上(百度、谷歌)删除旧页面并用新页面代替。

cdx301-y6esa2o7og-3.jpg

六、如何实施301重定向

在看如何实施301重定向之前,木木seo介绍一下一些关于301重定向的语法规则:

在CondPattern串的开头使用'!'(惊叹号)来指定不匹配(非)。‘^’表示行开始标志,‘$’表示行结束标志

RewriteCond %{HTTP_HOST} ^abc.com$ [NC]

意思是仅匹配abc.com一行,前后都没有任何其他字符。

如果是abc.com$,那么匹配以abc.com结束的一行,比如www.abc.com等等。

再如果是^abc.com,那么匹配以abc.com开始的一行,比如abc.com.cn等等。

综上所述:

RewriteCond %{HTTP_HOST} ^abc.com$ [NC]

RewriteRule ^(.*)$ http://www.abc.com/$1 [R=301,L]

意思是:对于HTTP_HOST环境变量,如果匹配以abc.com开头,并以abc.com结束的匹配条件,那么使用HTTP代码301强制重定向(R=301)至 http://www.abc.com/+原URL的全部,本条规则结束,不再继续向下匹配(L)。

①:虚拟主机

Linux虚拟主机设置301跳转方法:

在本地新建一个.htaccess文本文件,最好用的专业的编辑器软件如EditPlus 将代码粘入:

RewriteEngine On

RewriteCond %{HTTP_HOST} !^www.abc.com$ [NC]

RewriteRule ^(.*)$ http://www.abc.com/$1 [R=301,L]

说明:上述规则是将站点所有访问域名都重定向到www.abc.com(规则中的域名请修改为自己的域名)。

如果有多种需求,如abc.com跳转到www.abc.com qwe.com跳转到www.qwe.com,规则如下:

RewriteEngine On

RewriteCond %{HTTP_HOST} ^abc.com$ [NC]

RewriteRule ^(.*)$ http://www.abc.com/$1 [R=301,L]

RewriteCond %{HTTP_HOST} ^qwe.com$ [NC]

RewriteRule ^(.*)$ http://www.qwe.com/$1 [R=301,L]

根据自己的需要进行添加修改,然后上传到服务器wwwroot目录(网站根目录),改名为.htaccess即可。

再分享几种.htaccess文件的其他写法:

1.重定向domain.com到www.domain.com

RewriteEngine On

RewriteCond %{HTTP_HOST} ^domain.com$ [NC]

RewriteRule ^(.*)$ http://www.domain.com/$1 [L,R=301]

2.重定向www.domain.com到domain.com

RewriteEngine On

RewriteCond %{HTTP_HOST} ^www.domain.com$ [NC]

RewriteRule ^(.*)$ http://domain.com/$1 [L,R=301]

3.重定向olddomain.com到www.newdomain.com

RewriteEngine On

RewriteCond %{HTTP_HOST} ^olddomain.com$ [NC]

RewriteRule ^(.*)$ http://www.newdomain.com/$1 [L,R=301]

4.重定向olddomain.com to newdomain.com

RewriteEngine On

RewriteBase /

RewriteCond %{HTTP_HOST} ^olddomain.com$ [NC]

RewriteRule ^(.*)$ http://newdomain.com/$1 [L,R=301]

5.老域名A指向新域名B

RewriteEngine On

RewriteBase /

RewriteCond %{HTTP_HOST} ^www.a.com$ [NC]

RewriteRule ^(.*)$ http://www.b.com/$1 [L,R=301]

win虚拟主机设置301跳转方法:

手动设置的(没有自动生成)

1、进入主机控制面板,进入ISAPI筛选器设置,点击"开启自定义URL静态化支持"按钮。

2、待开启伪静态功能后,进入FTP文件管理,找到\others\discuz\httpd.conf 修改这里面的规则。

3、示例代码:

RewriteCond %{HTTP:Host} ^abc.com$

RewriteRule (.*) http://www.abc.com$1 [NC,R=301]

第一条表示要做跳转的域名,第二条表示要跳转到的域名

如果有很多域名要做跳转,那么可以将第一条规则改为

RewriteCond %{HTTP:Host} !^www.abc.com$

这样,就表示非www.abc.com的域名访问都会跳转到www.abc.com ,多个域名做跳转的第二种方法是,首先复制多个 RewriteCond 项,将域名改好(除了最后一项),其余的 RewriteCond 项最后都要加个参数 [OR]即可。

注意:现在很多虚拟主机都自带301的配置,可以在主机控制面板上生成代码信息,然后按照上面的提示进行301重定向。

②:window独立服务

Win独立服务301设置(win2003、win2008):

打开IIS,首先新建立一个站点,随便对应一个目录E:\wwwroot\301web。该目录下只需要2个文件,一个 default.html,一个404.htm。在欲重定向的网页或目录上按右键;选中“重定向到URL”;在对话框中输入目标页面的地址;切记,记得选中“资源的永久重定向”;当然,最后要点击“应用”,完成。如下图所示:

cdx301-1eefa57006-4.png

注意:win2003跟win2008都是使用IIS服务器,所以301重定向的步骤方法是一样的。

③:Linux独立服务器

Linux独立服务器301设置(红帽企业版、centos):

我用的是红帽企业版,用的是源码包装的Web环境。然后我进入Linux服务器,找到apache的主配置文件 httpd.conf , 我的apache服务器下有多个虚拟主机,我找到我要做301重定向的虚拟主机,然后添加代码(代码是完整的):

1、进入Linux服务器,然后找到httpd.conf的Apache 主配置文件,下图红色框是我所在的完整位置,蓝色框是内容,也就是命令pwd现实所在位置,ls查询当前位置的内容。

cdx301-1eefa57006-5.png

2、既然找到主配置文件了,我们通过命令vi httpd.conf 编辑一下,在最后添加如下完整的代码。要找到配置的那个虚拟主机然后添加代码, 不要乱添加。

ServerName www.abc.com

ServerAdmin webmaster@dummy-host.example.com

LogLevel warn

ErrorLog logs/dummy-host.example.com-error_log

CustomLog logs/dummy-host.example.com-access_log common

ServerName abc.com

ServerAdmin webmaster@dummy-host.example.com

RewriteEngine on

RewriteRule ^(.*)$ http://www.abc.com$1 [R=301,L]

LogLevel warn

ErrorLog logs/dummy-host.example.com-error_log

CustomLog logs/dummy-host.example.com-access_log common

注意:不同形式安装的apache 其路径是不同的,有源码包、有YUM等安装方式,两种马路是不一样的,建议新手联系空间商并实施301重定向。

④:绑定/本地DNS

如果具有对本地DNS记录进行编辑修改的权限,则只要添加一个记录就可以解决此问题。若无此权限,则可要求网站托管服务商对DNS服务器进行相应设置。

⑤:DNS服务器的设置

若要将blog.abc.com指向www.abc.com,则只需在DNS服务中应增加一个别名记录,可写成:blog IN CNAME www.abc.com。

如需配置大量的虚拟域名,则可写成:* IN CNAME www.abc.com.

这样就可将所有未设置的以abc.com结尾的记录全部重定向到www.abc.com上。

⑥:头文件代码中设置

这几种方法用得比较少,主流都是通过ISS设置或.htaccess文件。

PHP下的301重定向

Header( "HTTP/1.1 301 Moved Permanently" );

Header( "Location: http://www" );

exit;

?>

HTTP/1.1 301 Moved Permanently

ASP下的301重定向

Response.Status="301 Moved Permanently"

Response.AddHeader "Location","http://www.ecaim.com/"

Response.End

ASP .NET下的301重定向

总的来说,网站改版可以通过301重定向将旧版本页面的所有全部传递到新版本页面上,另外则是对URL做规范化,实施的过程中要注意为什么要做301重定向、方法的操作、操作的正确度等。

来源:A5营销黄忠 木木seo加以补充

广告合作
QQ群号:707632017

温馨提示:

1、本网站发布的内容(图片、视频和文字)以原创、转载和分享网络内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。邮箱:2942802716#qq.com(#改为@)。

2、本站原创内容未经允许不得转裁,转载请注明出处“站长百科”和原文地址。

热门教程

  • Z-Blog教程
    Z-Blog教程
    ZBlog教程分享ZBlog安装教程、ZBlog建站教程和ZBlog使用教程等相关教程,包括如何创建...
  • WordPress教程
    WordPress教程
    WordPress教程提供了关于WordPress的基础知识和技巧,包括安装、设置、发布内容、选择主...
  • CSS教程
    CSS教程
    CSS教程提供了关于如何使用CSS来设计和美化网页的基础知识和技巧,包括选择器、样式规则、盒模型、布...
  • 宝塔面板教程
    宝塔面板教程
    宝塔面板教程是一个致力于向用户传授宝塔面板的使用技巧和知识的学习资源,旨在帮助用户快速上手和充分利用...
  • PHP教程
    PHP教程
    PHP教程提供了关于PHP语法、变量、函数、流程控制等概念的详细指导,同时介绍了常见的Web开发技术...

3个月免费VPS

亚马逊云科技