网站优化—关注搜索引擎优化,网站程序优化以及网站安全

正确设置301跳转

内容简介:这是一篇关于301跳转,301跳转代码,设置301的文章。互联网搜索301跳转,出来的多数就是这2段代码,第一段为php版本的301跳转代码,第二段为asp版本的301跳转代码。很多朋友以为只要将和自己网站相应语言的代码放到网站默认首页的顶部就完成了301跳转。这在大多数情况下是如此的。

header("HTTP/1.1 301 Moved Permanently");
header("Location: http://www.001pp.com/");
 

Response.Status="301 Moved Permanently" 
Response.AddHeader "Location", "http://www.001pp.com/"
Response.End

看到上面两段代码是否眼熟?互联网搜索301跳转,出来的多数就是这2段代码,第一段为php版本的301跳转代码,第二段为asp版本的301跳转代码。很多朋友以为只要将和自己网站相应语言的代码放到网站默认首页的顶部就完成了301跳转。这在大多数情况下是如此的。假设你有2个网站,一个是http://001pp.com/ ,另一个是 http://www.001pp.com/ 分别绑定了2个虚拟主机,倘若你想将001pp.com这个网站跳转到http://www.001pp.com/ ,那的确在http://001pp.com 这个网站的默认首页顶部放上上面2段代码就可以了。但是,假如需求更复杂一些呢?

例如,你只有一个网站,同时绑定了http://001pp.com ,http://bbs.001pp.com/ ,http://www.001pp.com/ 你想将其中的http://001pp.com/ ,http://bbs.001pp.com/ 都使用301跳转到 http://www.001pp.com/ ,如果你直接把代码放到网站默认首页,你会发现,页面无法打开。原因在于程序一直在执行“301 跳转到 http://www.001pp.com/ ” 这个动作,而跳转到 http://www.001pp.com/ 以后,程序还是执行了“301 跳转到 http://www.001pp.com/ ” 这个动作,陷入了死循环,要解决这个问题,需要在程序中加以判断,以上面的例子而言,代码应该做如下的改写

Php code:
if(($HTTP_SERVER_VARS["HTTP_HOST"]=="bbs.001pp.com")||($HTTP_SERVER_VARS["HTTP_HOST"]=="001pp.com"))
{
header("HTTP/1.1 301 Moved Permanently");
header("Location: http://www.001pp.com/");
}
 

Asp code:
if request.ServerVariables("SERVER_NAME")="bbs.001pp.com" or request.ServerVariables("SERVER_NAME")="001pp.com" then
 Response.Status="301 Moved Permanently"
 Response.AddHeader "Location", "http://www.001pp.com/"
 Response.End
end if
 

先对访问的主机头进行一个判断,只有当访问者访问http://bbs.001pp.com/或者访问http://001pp.com/ 才进行301跳转到 http://www.001pp.com/,这样就避免了死循环跳转的出现。

还有一种处理方式,专门用一个站点,适合拥有比较多的网站进行进行跳转管理,即专门新建一个网站,将所有需要跳转的域名绑定到该网站,在该网站的默认首页进行判断,执行相应的跳转。这样的好处是便于管理多个网站。坏处就是增加了购买一处虚拟主机的成本。