域名301重定向问题简析|php与asp的301跳转避免死循环跳转方法
时间:2012-05-20 22:10:31
小编:动力软件园
阅读:
这是一篇关于301跳转代码,301跳转,301璺宠浆浠g爜的文章。互联网搜索301跳转,出来的多数就是这2段代码,第一段为php版本的301跳转代码,第二段为asp版本的301跳转代码。很多朋友以为只要将和自己网站相应语言的代码放到网站默认首页的顶
header("http/1.1 301 moved permanently");
header("location: http://www.pw88.com/");
response.status="301 moved permanently"
response.addheader "location", "http://www.pw88.com/"
response.end
看到上面两段代码是否眼熟?互联网搜索301跳转,出来的多数就是这2段代码,第一段为php版本的301跳转代码,第二段为asp版本的301跳转代码。很多朋友以为只要将和自己网站相应语言的代码放到网站默认首页的顶部就完成了301跳转。这在大多数情况下是如此的。假设你有2个网站,一个是http://pw88.com/ ,另一个是 http://www.pw88.com/ 分别绑定了2个虚拟主机,倘若你想将pw88.com这个网站跳转到http://www.pw88.com/ ,那的确在http://pw88.com 这个网站的默认首页顶部放上上面2段代码就可以了。但是,假如需求更复杂一些呢?
例如,你只有一个网站,同时绑定了http://pw88.com ,http://bbs.pw88.com/ ,http://www.pw88.com/ 你想将其中的http://pw88.com/ ,http://bbs.pw88.com/ 都使用301跳转到 http://www.pw88.com/ ,如果你直接把代码放到网站默认首页,你会发现,页面无法打开。原因在于程序一直在执行“301 跳转到 http://www.pw88.com/ ” 这个动作,而跳转到 http://www.pw88.com/ 以后,程序还是执行了“301 跳转到 http://www.pw88.com/ ” 这个动作,陷入了死循环,要解决这个问题,需要在程序中加以判断,以上面的例子而言,代码应该做如下的改写
php code:
if(($http_server_vars["http_host"]=="bbs.pw88.com")||($http_server_vars["http_host"]=="pw88.com"))
{
header("http/1.1 301 moved permanently");
header("location: http://www.pw88.com/");
}
asp code:
if request.servervariables("server_name")="bbs.pw88.com" or request.servervariables("server_name")="pw88.com" then
response.status="301 moved permanently"
response.addheader "location", "http://www.pw88.com/"
response.end
end if
先对访问的主机头进行一个判断,只有当访问者访问http://bbs.pw88.com/或者访问http://pw88.com/ 才进行301跳转到 http://www.pw88.com/,这样就避免了死循环跳转的出现。
还有一种处理方式,专门用一个站点,适合拥有比较多的网站进行进行跳转管理,即专门新建一个网站,将所有需要跳转的域名绑定到该网站,在该网站的默认首页进行判断,执行相应的跳转。这样的好处是便于管理多个网站。坏处就是增加了购买一处虚拟主机的成本。