当前位置:asp编程网>技术教程>Asp教程>  正文

可用于伪静态的301重定向ASP类

2012-11-20 11:22:18   来源:网络    作者:backmouse   浏览量:2368   收藏
<%
'***************************************************************
'    文件名:     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
%>
(鼠标移到代码上去,在代码的顶部会出现四个图标,第一个是查看源代码,第二个是复制代码,第三个是打印代码,第四个是帮助)

 



关于我们-广告合作-联系我们-积分规则-网站地图

Copyright(C)2013-2017版权所属asp编程网