当前位置: 首页 > 图文教程 > 网络编程 > ASP > SITEMAP生成程序的ASP实现

ASP
ASP编程入门进阶(廿一):DAO SQL之建立数据库表
ASP应用之模板采用
ASP上传图片功能的又一实现(OLE对象)
asp中FSO复制文件代码
asp复制文件夹代码
实例演练ASP+XML编程比较全的了
利用ASP从远程服务器上接收XML数据的方法
PJ-Blog教程┊增强博客用户体验~让发表内容的同时拷贝到剪贴板以防丢失
TSYS一个新闻多种特性时如何进行前台更新?
TSYS资源特性的效率提高方法
重置TSYS系统中的所有"生成的文件"成"未生成文件"
TSYS中生成静态页时溢出: ''CInt''
asp实现防止站外提交内容的两个方法
ASP中生成文本文件的两种方式
ASP是否可以定时触发事件
ASP解压缩(在线解压缩类)
使用ASP删除指定IIS站点
使用ASP控制指定站点解析脚本语言函数
HTML标签及ASP函数速查表
如何使用Administrators组用户运行ASP程序

SITEMAP生成程序的ASP实现


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-08-14   浏览: 204 ::
收藏到网摘: n/a

这是一个完整的ASP生成SITEMAP程序,只要将该程序放在站点目录任何一个位置调动一下即可在站点根目录生成sitemap.xml文件。程序生成的SITEMAP.XML会自动根据目录的深度递减priority(优先级)值

<%
flag=Trim(Request("flag"))
If flag="BUILD" Then
 response.write "SITEMAP生成程序,作者:晶友软件,网站:www.cfsoft.com.cn" & "<br>"
 Server.ScriptTimeout=500000
 'on error resume next

 session("server")= "http://"&Trim(Request.ServerVariables("SERVER_NAME"))'
 vDir = "/" '制作SiteMap的目录,相对目录(相对于根目录而言)
 set objfso = CreateObject("Scripting.FileSystemObject")
 root = Server.MapPath(vDir)

 str = "<?xml version=""1.0"" encoding=""UTF-8""?>"
 str = str & "<urlset xmlns=""http://www.sitemaps.org/schemas/sitemap/0.9"">" & vbcrlf

 Set objFolder = objFSO.GetFolder(root)

 Set colFiles = objFolder.Files

 For Each objFile In colFiles
  str = str & getfilelink(objFile.Path,objfile.dateLastModified,1.0)
 Next
 Call ShowSubFolders(objFolder,0.9)
 str = str & "</urlset>" & vbcrlf
 set fso = nothing

 Set objStream = Server.CreateObject("ADODB.Stream")
 With objStream
  '.Type = adTypeText
  '.Mode = adModeReadWrite
  .Open
  .Charset = "utf-8"
  .Position = objStream.Size
  .WriteText=str
  .SaveToFile server.mappath("/sitemap.xml"),2 '生成的XML文件名
  .Close
 End With

 Set objStream = Nothing

 If Not Err Then
  Response.Write("<script>alert('...............成功生成站点地图..................');</script>")
  Response.End
 End If

 Sub ShowSubFolders(objFolder,priority)
  Dim temppriority
  Set colFolders = objFolder.SubFolders
  For Each objSubFolder In colFolders
   if folderpermission(objSubFolder.Path) then
    str = str & getfilelink(objSubFolder.Path,objSubFolder.dateLastModified,priority)
    Set colFiles = objSubFolder.Files
    For Each objFile In colFiles
     str = str & getfilelink(objFile.Path,objFile.dateLastModified,priority)
    Next
    If priority>0.5 Then
     temppriority=priority-0.1
    Else
     temppriority=0.5
    End if
    Call ShowSubFolders(objSubFolder,temppriority)
   end if
  Next
 End Sub


 Function getfilelink(file,datafile,priority)
  Dim temppriority
  If priority=1.0 Then
   temppriority=priority&".0"
  End If
  If Left(CStr(priority),1)="." Then
   temppriority="0"&priority
  End if
  root=replace(root,"\","/")
  root=LCase(root)
  file=replace(file,"\","/")
  file=LCase(file)

  file=replace(file,root,"")


  If FileExtensionIsBad(file) then Exit Function
  if month(datafile)<10 then filedatem="0"
  if day(datafile)<10 then filedated="0"
   filedate=year(datafile)&"-"&filedatem&month(datafile)&"-"&filedated&day(datafile)
   getfilelink = "  <url>"&vbcrlf
   getfilelink=getfilelink&"    <loc>"&server.htmlencode(session("server")&file)&"</loc>"&vbcrlf
   getfilelink=getfilelink&"    <lastmod>"&filedate&"</lastmod>"&vbcrlf
   getfilelink=getfilelink&"    <changefreq>daily</changefreq>"&vbcrlf
   getfilelink=getfilelink&"    <priority>"&temppriority&"</priority>"&vbcrlf
   getfilelink=getfilelink&"  </url>"&vbcrlf
   response.write "成功生成地址:"& server.htmlencode(session("server")&file) & "<br>"

   Response.Flush
 End Function


 Function Folderpermission(pathName)

  '需要过滤的目录(不列在SiteMap里面)
  PathExclusion=Array("\admin","\_vti_cnf","_vti_pvt","_vti_log","cgi-bin","\bizadmin","\bookpic","\css","\data","\eWebEditor","\footprint","\images","\images_remote","\Inc","\js","\myimg","\netfootimg","\netheadimg","\netimg","\picture","\css","\conn""\Skin","\skin_Mesky","\uploadfile","\uploadfiles","\uploadpic")
  Folderpermission =True
  for each PathExcluded in PathExclusion
   if instr(ucase(pathName),ucase(PathExcluded))>0 then
    Folderpermission = False
    exit for
   end if
  next
 End Function


 Function FileExtensionIsBad(sFileName)
  Dim Extension, bFileExtensionIsValid, sFileExt
  Extensions = Array("html","htm")
  '设置列表的文件名,扩展名不在其中的话SiteMap则不会收录该扩展名的文件

  if len(trim(sFileName)) = 0 then
  FileExtensionIsBad = true
  Exit Function
  end if

  sFileExtension = right(sFileName, len(sFileName) - instrrev(sFileName, "."))
  bFileExtensionIsValid = false 'assume extension is bad
  for each sFileExt in extensions
  if ucase(sFileExt) = ucase(sFileExtension) then
  bFileExtensionIsValid = True
  exit for
  end if
  next
  FileExtensionIsBad = not bFileExtensionIsValid
 End Function
End if
%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<link href="images/css.css" rel="stylesheet" type="text/css">
<title>SITEMAP生成-晶友软件http://www.cfsoft.com.cn</title>
</head>

<body>

<br>
<br>
<br>
<br>
<br>
<form action="sitemap.asp?flag=BUILD" method="post" name="fm1" id="fm1">
  <table width="99%" border="0" align="center" class="tableBorder">
    <tr bgcolor="#E8F1FF">
      <td colspan="6" align="center"  class="td">
          <input type="submit" name="Submit" value="生成">
        </td>
    </tr>
 
  </table>
  <br>

</form>

</body>
</html>