您现在的位置:首页 >> 站长作品 >> 随笔 >> 内容

关于网站多域名301重定向的体会

时间:2011-11-24 16:47:16 点击:

  核心提示:关于多域名301重定向几种问题的解决体会。...

 

    本身不是IT行的,做网站一直都是边干边学,经验都是从失败和挫折中积累出来的。301重定向是啥玩意儿,一开始谁知道啊?换一次虚拟主机,二级域名或三级域名便作废一次,外部链接挨个通知人家更换域名,人家还不一定爱答理;各大搜索引擎一时找不着了北,于是只能重新收录,网站的流量没个三五个月的培养,恢复不了元气。后来到网上查更换虚拟空间的相关条目,才知道了301重定向这个说法。
    常用的重定向方式有:301 redirect, 302 redirect 与 meta fresh。301重定向是网页更改地址后对搜索引擎友好的最好方法,只要不是暂时搬移的情况,都建议使用301来做转址。当然,如果你有服务器的管理权限,这一切都要容易得多。我相信多数人和我一样,都是用的虚拟主机,自己是没有多大权限的。所以我下面要说的,主要也是针对虚拟主机的用户;如果你是服务器的拥有者或管理人员,那么看到这里就可以打道回府了。
    你如果要在搜索引擎中查“301重新定向代码”或“301重定向代码”、“301永久定向代码”,那么很容易就会得到下面两段代码:
PHP下的301重定向:
<?
  Header( "HTTP/1.1 301 Moved Permanently" ) ;
  Header( "Location: http://www.dongliw.com" );
?

  ASP下的301重定向:
  <%@ Language=VBScript %>
  <%
  Response.Status="301 Moved Permanently"
  Response.AddHeader "Location","http://www.dongliw.com"
%>

    所以,如果你已经拥有一个虚拟空间,域名为http://yxh58..skpay.net,并且提前知道这个虚拟空间将要关闭,便又开通了另一个虚拟空间,域名是http://www.dongliw.com。而前一个空间又是支持ASP的话,这时候你只要把前一个空间的的默认首页改为index.asp,然后在头部最顶端加上
 <%@ Language=VBScript %>
  <%
  Response.Status="301 Moved Permanently"
  Response.AddHeader "Location","http://www.dongliw.com"
  %>
这段代码,这样搜索引擎机器蜘蛛在爬行前一个空间时,看到这段代码就会认为,这个空间的内容已经永久转向http://www.dongliw.com了。这样一来,新的空间逐渐就会将前一空间积累的PR值接收过来,所谓的PR劫持用的就是这个原理。
    可实际上,空间商往往从来不替你着想,尤其是免费空间提供商,想什么时候关就什么时候关,招呼都懒得打,想提前几个月知道虚拟主机要关闭的消息,几乎是不可能的。所以说上面这段代码,多数情况下用在独立域名集中权重上。比如说独立域名dongliw.com和二级域名www.dongliw.com,如果你想让www.dongliw.com作为主域名,就在index.asp的头部加上:
 <%@ Language=VBScript %>
  <%
  Response.Status="301 Moved Permanently"
  Response.AddHeader "Location","http://www.dongliw.com"
  %>
    这样,搜索引擎收录的页面便是带www.dongliw.com的。如果不加代码,则不分权重,反而影响网站的收录效果。
    但是如果一个空间拥有多个域名,比如有dongliw.com,www.dongliw.com,还有虚拟主机赠送的yxh58.skpay.net,怎么办呢?如果不作301重定向,很可能会被搜索引擎认为是垃圾站点而舍弃;可是如法炮制加上以上的代码,却发现网站首页打不开了。后来上网寻求解决办法,终于知道了这是因为程序一直在执行301跳转到 www.dongliw.com这个动作,当跳转到www.dongliw.com 时,还是执行这个动作,导致了死循环。要解决这个问题,正确实现301重定向,只有用SELECT语句,实现域名跳转。以asp为例:
<%

sURL=lcase(Request.ServerVariables("HTTP_HOST"))


case "yxh58.skpay.net/"

Response.Status = "301 Moved Permanently"

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

case "dongliw.com/"

Response.Status = "301 Moved Permanently"

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

End Select

%>

这是先对访问的主机头进行判断,只有当访问者访问 yxh58.skpay.net 或dongliw.com时,才进行301重定向,永久跳转到http://www.dongliw.com/ ,这样就避免了死循环。
    301重定向的代码只有在动态的页面才能执行,html页面是不能执行的。所以如果你的网站首页是index.htm,就需要将其转换成index.asp,然后再加相应代码。
    除了301重定向,还有一个集中域名权重的办法,就是所有网页的头部添加上这段代码:
<base href="http://www.dongliw.com/" />
    注意,URL后有一定要带上"/",如果是动态asp页面,代码下面还要空一行,否则会出现网页一直在“下载数据”的情况。这段代码的意思是,定义你网站所有的URL是以这段代码中规定的URL开始的。
实际应用的效果是,作了301重定向以后,谷歌一个星期就有了响应,三到四个星期就完成了转向。但是百度反应迟钝,虽然新的域名也收录了,但对旧域名仍恋恋不舍,至少在先收录的域名解除绑定之前,十个星期都没有转过来。不过,我并不认同百度对301重定向不识别的观点,本人的实际经验表明,当时本站有四个域名同时绑定一个空间,如果不作301重定向的话,恐怕早就被百度当垃圾站点封杀了。而之所以没被封杀,则表明百度是认可301重定向的,只不过它有个对域名的考察期,这个期限究竟有多长,由于发生了本站空间商将原来的域名解除了绑定的情况,而无法知晓了。
    特别提醒:以上代码在使用时,请将其中的URL地址更换为你的URL地址。

 “东篱网”站长“披月望云”作(转载请保留来源和署名)

                                                                   2010年4月4日

编辑:杨新华 来源:原创
相关评论
发表我的评论
  • 大名:
  • 内容:
  • 东篱网(www.dongliw.com) ©
  • 联系我们 Email:yxh583*sohu.com
  • 版权声明:本站古文名句、典故故事、诗词名句、诗联漫话、格言警语、民歌辑览等栏目,依法享有编辑著作权,严禁将本站内容作任何形式的翻版。

    冀公网安备 13040302000948号

    冀ICP备16030138号