<% '*************************************************************** ' 文件名: Redirection.cls.asp ' 描述: 可用于伪静态的301重定向ASP类 ' @作者: 执笔勾勒流年(BackMouse) <94126162@qq.com> ' @版本: 0.1 Beta <2012 年 11 月 19 日> '*************************************************************** '【使用说明】 '========================jUrls属性(带参数传入的静态页面)======================== '值:脚本文件名,"|"分隔多个文件名 '注意:为了正确性,请在文件名前加"/",请使用小写 '示例:实例名.jUrls = "/news_index.asp|/book_index.asp" '================================================================================= '========================jStrs属性(带参数传入的静态页面)======================== '值:传入的GET参数名称,"|"分隔每个页面的参数,","分隔多个参数 '注意:分隔符内容对应jUrls属性的分隔符内容,请使用小写 '示例:实例名.jStrs = "NewsType,ListPage|id" '================================================================================= '========================lStrs属性(带参数传入的静态页面)======================== '值:转换后的静态页面名,"|"分隔多个文件名 '具体:"#数字"代表参数,按顺序对应jStrs的参数名,数字从0开始,按1增加 '注意:分隔符内容对应jUrls属性的分隔符内容,请使用小写 '示例:实例名.lStrs = "/news_index_#0_#1.html|/book_index_#0.html" '================================================================================= '========================jUrl属性(不带参数传入的静态页面)======================= '值:脚本文件名,"|"分隔多个文件名 '注意:为了正确性,请在文件名前加"/",请使用小写 '实例:实例名.jUrl = "/login.asp|/reg.asp|/loginout.asp|/protocol.asp|/index.asp" '================================================================================= '========================PastUrl属性======================= '值:原来的域名 '示例:实例名.PastUrl = "xxx.com" '========================================================== '========================ToUrl属性========================= '值:重定向的域名 '示例:实例名.ToUrl = "www.xxx.com" '========================================================== '========================NotPath属性======================= '值:不进行伪静态的文件目录,多个用"|"分隔 '注意:为了正确性,请在文件名和文件后前加"/",请使用小写 '示例:实例名.NotPath = "/admin/|/demo/" '========================================================== '========================ToHtml属性======================= '值:静态页面后缀 '示例:实例名.ToHtml = ".html" '========================================================== '=====================Redirection()方法==================== '说明:开始伪静态的301重定向 '示例:实例名.Redirection() '========================================================== Class Redirection_BackMouse Private ScriptName '获取当前文件脚本名称 Public jUrls '带参数静态页面 的脚本名字符串 Private aUrls '带参数静态页面 的脚本名数组 Public jStrs '带参数静态页面 的GET参数字符串 Private aStrs '带参数静态页面 的GET参数数组 Private aStrss '带参数静态页面 的各个GET参数名数组 Public lStrs '带参数静态页面 的静态地址规则字符串 Private alStr '带参数静态页面 的静态地址规则数组 Private iUrls '带参数静态页面 第一层循环变量 Private iStrs '带参数静态页面 第二层循环变量 Public jUrl '不带参数静态页面 的脚本名字符串 Private aUrl '不带参数静态页面 的脚本名数组 Private iUrl '不带参数静态页面 第一层循环变量 Public PastUrl '原来的域名 Public ToUrl '301重定向后的域名 Public ToHtml '转换后的后缀 Public NotPath '不进行静态重定向的目录 Private aNotPath '不进行静态重定向的目录数组 Private iNotPath '判断目录第一层循环 Private vNotPath '目录判断变量 Private Sub Class_Initialize() vNotPath = 0 End Sub Private Sub Class_Terminate() Set ScriptName = Nothing Set jUrls = Nothing Set aUrls = Nothing Set jStrs = Nothing Set aStrs = Nothing Set aStrss = Nothing Set lStrs = Nothing Set alStr = Nothing Set iUrls = Nothing Set iStrs = Nothing Set jUrl = Nothing Set aUrl = Nothing Set iUrl = Nothing Set PastUrl = Nothing Set ToUrl = Nothing Set NotPath = Nothing Set aNotPath = Nothing Set iNotPath = Nothing Set vNotPath = Nothing End Sub Public Sub Redirection() If Request.ServerVariables("HTTP_HOST")=PastUrl Then ScriptName = LCase(Request.ServerVariables("SCRIPT_NAME")) aNotPath = split(NotPath,"|") For iNotPath=0 To Ubound(aNotPath) '判断当前目录是否在不进行静态重定向数组中存在,总返回值为0则不存在 vNotPath = vNotPath + Instr(ScriptName,aNotPath(iNotPath)) Next If vNotPath = 0 then '当获取的路径为前台时,执行进行伪静态页面判断,并301重定向伪静态页面。 '进行带参数的伪静态页面301重定向 aUrls = split(jUrls,"|") aStrs = split(jStrs,"|") alStr = split(lStrs,"|") For iUrls=0 To Ubound(aUrls) If Instr(ScriptName,aUrls(iUrls)) > 0 then aStrss = split(aStrs(iUrls),",") For iStrs=0 To Ubound(aStrss) alStr(iUrls) = replace(alStr(iUrls),"#"&iStrs,Request.QueryString(aStrss(iStrs))) Next Response.Status="301 Moved Permanently" Response.AddHeader "Location","http://"& ToUrl & alStr(iUrls) Response.End End if Next '进行不带参数的伪静态页面301重定向 aUrl = split(jUrl,"|") For iUrl=0 To Ubound(aUrl) If Instr(ScriptName,aUrl(iUrl)) > 0 then Response.Status="301 Moved Permanently" Response.AddHeader "Location","http://"& ToUrl & replace(Request.ServerVariables("SCRIPT_NAME"),".asp",ToHtml) Response.End End if Next Else '当获取的路径为后台时,直接301重定向动态页面。 Response.Status="301 Moved Permanently" Response.AddHeader "Location","http://"& ToUrl & Request.ServerVariables("SCRIPT_NAME") End if End If End Sub End Class %> <% 调用代码示例: Dim p Set p = New Redirection_BackMouse p.jUrls = "/news_index.asp|/book_index.asp" p.jStrs = "NewsType,ListPage|id" p.lStrs = "/news_index_#0_#1.html|/book_index_#0.html" p.jUrl = "/login.asp|/reg.asp|/loginout.asp|/protocol.asp|/index.asp" p.PastUrl = "xxx.com" p.ToUrl = "www.xxx.com" p.NotPath = "/admin/|/demo/" p.ToHtml = ".html" p.Redirection() Set p = Nothing %>(鼠标移到代码上去,在代码的顶部会出现四个图标,第一个是查看源代码,第二个是复制代码,第三个是打印代码,第四个是帮助)