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代码- <%
- Dim scriptaddress,servername,ops,message
- scriptaddress = cstr(request.servervariables("script_name"))
- servername = cstr(Request.ServerVariables("server_name"))
- ops = request.querystring
- Function geturl() '取得当前页网址
- if ops <> "" then
- geturl ="http://"& servername & scriptaddress & "?" & ops
- else
- geturl ="http://"& servername & scriptaddress
- end if
- End Function
- Function checkurl() '检查是否需要转向
- if instr(1,geturl,"blog",1) <> 0 then
- ops = replace(ops,"404;http://www.goupwing.com:80/blog/","")
- checkurl = "http://blog.goupwing.com/" & ops
- message = "<p>悄悄的,“追风”的脚步也追出了国境线了。。。<br />请一定注意跟上我们的新脚印!!!</p>"
- else
- checkurl = "http://www.goupwing.com/"
- message = "<p>您要查看的网页不存在,或者已被删除!<br />请返回“朝天翼”首页查询!!!</p>"
- end if
- End Function
- %>
转向,head区域,调用函数网址:
- <meta http-equiv="refresh" content="3;URL=<%= checkurl %>" />
内容,在需要的地直接输出“message”变量就行了。
- <%= message %>
可以看看本站的两个目录下的报错效果:
http://www.goupwing.com/blog/article.asp?id=710
http://www.goupwing.com/article.asp?id=710





