以文本方式查看主题

-  中文XML论坛 - 专业的XML技术讨论区  (http://bbs.xml.org.cn/index.asp)
--  『 Dot NET,C#,ASP,VB 』  (http://bbs.xml.org.cn/list.asp?boardid=43)
----  使用ASP的错误陷阱实现网站虚拟目录功能  (http://bbs.xml.org.cn/dispbbs.asp?boardid=43&rootid=&id=52831)


--  作者:卷积内核
--  发布时间:9/19/2007 7:58:00 AM

--  使用ASP的错误陷阱实现网站虚拟目录功能
使用ASP的错误陷阱实现网站虚拟目录功能

我想大家一定都看见过在很多提供个人主页的网站上有这个虚拟目录功能。

就是http://xxx.xxx.xxx/~Batman就会连接到我的主页上(假设我有这个主页,呵呵)

那么我们怎么使用纯粹的ASP技术来实现这个功能了,例如在chinaasp上如果

联接是http://www.chinaasp.com/~Batman就会自动连接到与Batman有关的个人信息上呢?

下面将介绍一种使用ASP的错误陷阱技术:

在IIS中大家都知道有一个自定义出错处理功能,我以前也介绍过好几次的。

从IIS控制管理器选中Default Web Site然后单击右键,选择属性,再选择自定义

错误,然后单击编辑。。按钮等等。。

好了。现在将HTTP 404 error这个错误重新自定义为使用AspErr.Asp这个文件

当然这个文件的代码就在下面罗。

文件AspErr.Asp代码如下:

<%

strTarget = Request.ServerVariables("QUERY_STRING")

' *** 看是否调用的虚拟目录格式即开头是否有“~”字符

if instr(strTarget, "~") then

' *** 字符处理,去掉字符串中的“~”和“.ASP”

strAlias = trim(right(strTarget, len(strTarget) - instr(strTarget, "~")))

strAlias = LCase(replace(UCase(strAlias), ".ASP", ""))

if trim(strAlias) <> "" then

' *** 查询是否存在这个用户名(即虚拟目录)

Set recTemp = Server.CreateObject("ADODB.RecordSet")

recTemp.Source = "select user_id, list_type from users where alias_file = '" & Replace(strAlias, "'", "'") & "'")

recTemp.ActiveConnection = conDB

recTemp.Open

' *** 查询个人信息,并显示他的信息,我暂且借用飞鸟大哥写的

'myinfo.asp文件,可不要敲我哦,呵呵

if not (recTemp.BOF and recTemp.EOF) then

strRedir = "myinfo.asp?user_id=" & Server.URLEncode(trim(recTemp("User_ID")))

recTemp.Close

Set recTemp = Nothing

Response.Redirect strRedir

end if

recTemp.Close

Set recTemp = Nothing

end if

end if

' *** 如果找不着对应用户名的虚拟目录的话,就显示错误呀

Response.Status = "404 Not Found"

%>

<html>

<head><title>404 Not Found</title></head>

<body>

404 Not Found

</body>

</html>


W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
62.500ms