301永久重定向的方法

这篇文章可看可不看,以前讲301重定向都是回复别人的评论,而没在自己博客上发布过一篇详细关于301重定向的文章,在我印象中,已经有好几位朋友让我发布一篇关于301重定向的文章。索性今天我就详细写一下吧

这篇文章可看可不看,以前讲301重定向都是回复别人的评论,而没在自己博客上发布过一篇详细关于301重定向的文章,在我印象中,已经有好几位朋友让我发布一篇关于301重定向的文章。索性今天我就详细写一下吧,也许此文对你有用,也许此文对大多数人已经是再常见不过的问题了,你说是吧weiking 。

301永久重定向对SEO 无任何不好的影响,而且网页A 的关键词排名和PR 级别都会传达给网页B ,网站更换了域名,表示本网页永久性转移到另一个地址,对于搜索引擎优化|SEO来说,给搜索引擎一个友好的信息,告诉它此页面已永久重定向,避免搜索引擎找不到页面。

什么情况下使用301重定向

1:网站更换域名时,通过301永久重定向将旧域名重定向至新域名,挽回流量损失和SEO 。

2:当出于需要删除网站中的某些目录时,比如我要删除我博客下的博客导航,这时就可以用301永久重定向到网站首页。

3:如果你有多个闲置域名时需要指向同一网站时,通过301永久重定向可以实现。

4:你打算实现网址规范化。

如何实现网址规范化

我重点讲讲这个网址规范化,因为这是大家很容易忽略的问题。例如我的域名,如果不做任何设置,它默认会产生四个网址:

,

(1)网站域名(2)网站域名(3)网站域名/default.html(4)网站域名/default.html

如果不做301重定向会导致:你站点主域名的pr 值分散到其他几个URL 了。先查询上面4个网址的PR 值,如果结果一致,说明网站没有规范化问题;如果不一致,表明有规范化问题。这时候我们就需要使用301永久定向技术来实现网址的规范化了。需要注意的是,带www 和不带www 的两个网址,www 其实是个二级域名。

我所知道的常用的301重定向设置方法有2种。一个是通过IIS 界面直接设置,另外一个是通过代码来实现301重定向设置。卢松松建议用服务器组件来做重定向,我以下例子以我的域名网站域名301重定向到网站域名进行讲解。

1:IIS 服务器实现301 重定向

打开IIS ,右键-属性-网站-IP 地址哪里点编辑增加一个站点,增加一个站点,绑定的一下主机头,也可以绑定多个闲置域名。如图所示:

,

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

,

2:Apache 服务器实现301 重定向

在Apache 中,有个很重要的文件.htaccess ,通过对它的设置,可以实现很多强大的功能,301 重定向只是其中之一。找到redirect permanent / http://网站域名:

redirect permanent /old.html http://网站域名:修改这句即可。

3:在.htaccess 文件中增加301重定向指令

采用“mod_rewrite”技术,形如:

RewriteEngine on

RewriteRule ^(.*)$ http://网站域名/$1 [R=301,L]

,

4:适用于使用Unix 网络服务器的用户

通过此指令通知搜索引擎的spider 你的站点文件不在此地址下。这是较为常用的办法。

形如:Redirect 301 / http://网站域名/

5:在服务器软件的系统管理员配置区完成301重定向

适用于使用Window 网络服务器的用户

6:绑定/本地DNS

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

DNS 服务器的设置

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

如需配置大量的虚拟域名,则可写成:* IN CNAME 网站域名. 这样就可将所有未设置的以网站域名结尾的记录全部重定向到网站域名上。

7:用ASP/PHP实现301重定向:

ASP :

,

Response.Status="301 Moved Permanently"

Response.AddHeader "Location","http://网站域名/"

Response.End

PHP :

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

header("Location:http://网站域名/");

exit();

常用的跳转方式

301代表永久性转移,301重定向是网页更改地址后对搜索引擎友好的最好方法,只要不是暂时搬移的情况, 都建议使用301来做转址。

302代表 暂时性转移,只有当一个网站或网页在24到48小时之内临时移到其它位置的情况下才能使用该命令。能够对302重定向具备优异处理能力的只有 Google ,在前些年,不少搞SEO 曾广泛应用这项技术作弊,但也很容易遭受惩罚。

用HTML 跳转:, 表示5秒后自动跳转到首页,你也可以把时间设置的更短,但也很容易被搜寻引擎容易误判为spam 而遭到惩罚。

用javascript 跳 转:

转发和重定向的区别

,

一句话,转发是服务器行为,重定向是客户端行为。转发时一次请求,重定向是2次请求,转发地址栏不会发生改变,重定向地址栏会改变,转发在项目内,重定向 可以转到项目外。当使用转发时,JSP 容器将使用一个内部的方法来调用目标页面,新的页面继续处理同一个请求,而浏览器将不会知道这个过程。 与之相反,重定向方式的含义是第一个页面通知浏览器发送一个新的页面请求。

怎么选择是重定向还是转发

通常情况下转发更快,而且能保持request 内的对象,所以他是第一选择。但是由于在转发之后,浏览器中URL 仍然指向开始页面,此时如果重载当前页 面,开始页面将会被重新调用。如果你不想看到这样的情况,则选择转发。

动态页面进行301重定向的权重传递是最优化的,代码如下:

<

Response.Status="301 Moved Permanently"

Response.AddHeader"Location","http://网站域名"

Response.End

>

,

if ( $_SERVER['SERVER_NAME'] == '不带www 的网站域名' 如lzzf5.com.com){ header("HTTP/1.1 301 MovedPermanently");

header("Location: http://网站域名");

exit();

}

?>

,

如果我想把http://不带www 的网站域名 权重转移到 http://网站域名 该怎么操作呢? 很简单, 情况下面代码.

<

if Request.ServerVariables("Http_Host")="不带www 的网站域名" then

Response.Status="301 Moved Permanently"

Response.AddHeader"Location","http://网站域名"

Response.End

end if

>

if ( $_SERVER['SERVER_NAME'] == '不带www 的网站域名'){

header("HTTP/1.1 301 MovedPermanently");

header("Location: http://网站域名");

exit();

}

?>

,

我想做完美的301跳转, 也就是子页面跳转到对应的子页面怎么操作呢? 同级域名跳转例如:

已经有网友成功验证, 这个方法是可行的. 效果比动态的301跳转来的慢一些. <

netpath = "http://网站域名"

netpath =netpath&Request.ServerVariables("PATH_INFO")

response.write netpath

Response.Status="301 Moved Permanently"

Response.AddHeader "Location",netpath

Response.End

>

非同级域名跳转例如:

也不难, 如下.

<

Dim dm,sn

dm=Request.ServerVariables("Server_name")'获取域名

' 这里的3是指www 的长度

if left(dm,3)<>"www" then

Response.Status="301 Moved Permanently"

Response.AddHeader "Location", GetUrl()

Response.End

end if

' 获取当前Url 参数的函数

Function GetUrl()

Dim ScriptAddress,Servername,qs

ScriptAddress = CStr(Request.ServerVariables("SCRIPT_NAME")) Servername =CStr(Request.ServerVariables("Server_Name"))

qs=Request.QueryString

if qs<>"" then

GetUrl ="http://www."& Servername& ScriptAddress &"?"&qs

else

GetUrl ="http://www."& Servername& ScriptAddress

end if

End Function

>

标签: