ASP定义动态404报错页

一个空间目录下,子目录绑定多个域名的人可能有这需要。

也是这次只转移博客才遇到这样的问题,因为现在博客已不在“www”域名目录下,而是不同的ip了,只能单独绑定“http://blog.goupwing.com”这个域名,虽说这已经是小站最大的访问来源。但由于我始终不想损失“http://www.goupwing.com/blog”的那一小部份的访问量,所以想着能不能在 404 报错页面里加个自动转向,从而达到和之前总体持平的结果。一开始考虑用 js 的,后来突然想起我的空间是支持用 asp 页面来定义报错页的,所以就改用 asp 来完成了。不过,想来 js 同理也应该可以做到。

道理很简单,就是把当前页(不要取成了上一页,因为要考虑第一源的因素)的地址取出来,然后判断是属于哪个域名的访问源,“www”的就是真的报错,直接返回首页。“blog”的则改成替换 http 头就行了。值得注意的地方就是,404 报错页网址一般会以目录 + 404 页 + 加错误网址作为参数的形式生成,像本站:

www.goupwing.com/404.asp?404;http://www.goupwing.com:80/xxx.html
www.goupwing.com/blog/404.asp?404;http://www.goupwing.com:80/blog/xxx.html

所以,在实际运用过程可以先取网址,再来设定条件。

 

本站设置代码如下:

ASP/Visual Basic代码
  1. <%  
  2.   Dim scriptaddress,servername,ops,message  
  3.   scriptaddress = cstr(request.servervariables("script_name"))  
  4.   servername = cstr(Request.ServerVariables("server_name"))  
  5.   ops = request.querystring  
  6.     
  7.   Function geturl() '取得当前页网址  
  8.     if ops <> "" then  
  9.        geturl ="http://"& servername & scriptaddress & "?" & ops  
  10.      else  
  11.        geturl ="http://"& servername & scriptaddress  
  12.     end if  
  13.   End Function  
  14.     
  15.   Function checkurl() '检查是否需要转向  
  16.       
  17.     if instr(1,geturl,"blog",1) <> 0 then  
  18.        ops = replace(ops,"404;http://www.goupwing.com:80/blog/","")  
  19.        checkurl = "http://blog.goupwing.com/" & ops  
  20.        message = "<p>悄悄的,“追风”的脚步也追出了国境线了。。。<br />请一定注意跟上我们的新脚印!!!</p>"  
  21.      else  
  22.        checkurl = "http://www.goupwing.com/"  
  23.        message = "<p>您要查看的网页不存在,或者已被删除!<br />请返回“朝天翼”首页查询!!!</p>"  
  24.     end if  
  25.   
  26.   End Function  
  27. %>  

 

转向,head区域,调用函数网址:

  1. <meta http-equiv="refresh" content="3;URL=<%= checkurl %>" />  

 

内容,在需要的地直接输出“message”变量就行了。

  1. <%= message %>  

 

可以看看本站的两个目录下的报错效果:
http://www.goupwing.com/blog/article.asp?id=710
http://www.goupwing.com/article.asp?id=710

朝天翼视觉创意工作室资源下载