超强版404.htm执行404.asp重定向

网站更换目录,我们一般想到用301重定向,但有时并不比404来的容易,但有的服务商并没有支持asp版的404,下面我将给你带来一个超级强悍的404.htm,让你的网站更换目录也不怕丢失流量!

针对情况:服务商的404页只能是html.htm.shtml三种格式,不支持ASP文件,

自定义404错误页面,能记录访客浏览的“错误页地址、来路、时间”,并自动记录在404err.htm页里,不需要数据库的。(空间需支持自定义404页、FSO组建支持)

方案一

我们共用到以下三个文件:

1、404.htm:是404错误页,访客访问的就是这页,它将获得“来路、时间、错误页地址”。

2、404err.asp:为递交页,把404.htm获取的信息生成在404err.htm里。

3、404err.htm:为自动生成页,记录着“错误页地址、来路、时间”。站长通过此页查看详细的记录。

404.htm代码如下(可以插入你已有的404页中的适当位置):

 

javascript 代码
 
  1. <script language=javascript>
  2. <!–时间now.toLocaleString()–>
  3. now = new Date()
  4. hour = now.getHours()
  5. <!–end–>
  6. document.writeln('<form name=\"404err.asp\" action=\"\/myerr\/404err.asp\" method=\"post\">');
  7. document.writeln('<input type=hidden name=errurl value="'+window.location.href+'">');
  8. document.writeln('<input type=hidden name=gourl value="'+document.referrer+'">');
  9. document.writeln('<input type=hidden name=sjs value="'+"   —   "+now.toLocaleString()+'">');
  10. document.writeln('<input type=\"submit\" value=\"该页正在维护中,点此返回\"><\/form>')
  11. </script>

404err.asp代码如下:

 

vb 代码
 
  1. <%
  2. guest = request("guest") & request("errurl")& request("sjs")& vbCrlf
  3. guest = Replace( guest, "<", "<" )
  4. guest = Replace( guest, ">", ">" )
  5. guest = Replace( guest, vbCrLf, "<br>" )
  6. Dim i,str,strResult,strTmp
  7. Dim M
  8. M = 95
  9.  
  10. For i = 1 To Len(guest) Step M
  11. strTmp = Mid(guest,i,M) & "<br>"

  12. strResult = strResult & strTmp

  13. Next
  14. guest=strResult 
  15. Set File = Server.CreateObject("Scripting.FileSystemObject")
  16. Application.Lock
  17. Path = Server.MapPath("404err.htm")
  18. if file.FileExists (Path) then
  19. const ForAppending=8
  20. set stream = file.OpenTextFile (path,8)
  21. stream.writeline "<br>"
  22. stream.writeline guest
  23. stream.close
  24. else
  25. set stream = file.CreateTextFile (path)
  26. stream.writeline "<b>404错误页流量详尽信息</b><br>"
  27. stream.writeline guest
  28. stream.close
  29. end if
  30. Application.UnLock
  31. %>
  32. <body>
  33. <iframe width=0 height=0 border=0 frameborder=0 marginwidth=0 marginheight=0 scrolling=no  src='goerr.asp?gourl=<%=request("gourl")%>&sjs=<%=request("sjs")%>'></iframe>
  34. <%
  35.   if request("gourl")="" then
  36.    response.write"<meta http-equiv='Refresh' content='0; URL=/'>"
  37. response.end
  38. end if

  39. %>
  40. <meta http-equiv='Refresh' content='1; URL=/?<%=request("gourl")%>'>

测试通过

方案二

最近我的网站更换了一次域名和目录,改动算是比较大的。老的HTML文件留着又担心让GOOGLE认为是网页复制,删了收录又是个损失,那么如何能在404上体现出对应的新网址呢?我的做法如下,分享给大家:注:其中的网址为举例,以求例子详细能说明问题,红色为更换目录的地方!

如老页

  http://yangjunwei.com/art3/2007-1/345-1.shtml

新页路径   http://yangjunwei.com/poplar/popar20071/345-1.shtml

javascript 代码
 

  1. <script language=javascript>
  2.  
  3. var oldurl=window.location.href
  4.  
  5. var newurl
  6.  
  7. newurl=oldurl.replace(/art\//g,"poplar\/poplar");   // 替换 art 为 poplar/poplar
  8.  
  9. newurl=newurl.replace(/-/g,"");

    //去掉所有"-"这里包括时间中"-"与最后一个"-",最后一个当然不是我们想删的

  10.  
  11. newurl=newurl.replace(/1\.shtml/g,"-1\.shtml"); //加上最后一个"-"
  12.  
  13. document.writeln('你浏览地址也变更,您可以尝试\n');
  14.  
  15. document.writeln('1.<a href="'+newurl+'">点击访问新网址<\/a>\n');
  16.  
  17. document.writeln('2.<a href=http:\/\/yangjunwei.com>点击从首页访问<\/a>\n'); //简单考虑其他情况
  18. </script>

这里没有判断其他错误404页,这个就不用这里说了

怎样?是不是很强大,如果对你有帮助,请给支持一下!