落伍者站长论坛's Archiver

cn7788 发表于 2006-11-24 10:31

(加精)再来个专门为google量身定做的sitemap生成代码,(可是动态的哦)

看过的朋友可帮忙顶哦,这些代码都是第一次发的,外面很多要不就是很复杂,看不懂,要不就是不能用的,下面的我写时候已经尽量简洁明了
外面很多所谓sitemap生成代码都只生成目录文件地址,没生成动态的,我后来自己写了这个,是支持动态的,例子:
如你是文章网站,文章有2000条,那你修改下对应你的文章数据表,即可生成除了所有目录文件外,还生成你的动态2000条地址,绝对的没话说,生成速度非常快
把下面代码保存为sitemap.asp文件,修改我已注明的几个地方,其他的一概不要修改,好不好用过才知道



<!--#include file="conn.asp"-->
<%
session("count")=0
strURL = "http://" & request.servervariables("SERVER_NAME") & _
left(request.servervariables("SCRIPT_NAME"),len(request.servervariables("SCRIPT_NAME"))-len("/sitemap.asp"))
dim foolcat
foolcat = foolcat + "<?xml version=""1.0"" encoding=""UTF-8""?>"
foolcat = foolcat + "<!--Google Site Map File Generated by [url]http://www.xxx.com[/url] " & return_RFC822_Date(now,"GMT") & "-->"
foolcat = foolcat + "<urlset xmlns=""http://www.google.com/schemas/sitemap/0.84"">"
foolcat = foolcat + "<url>"
foolcat = foolcat + "<loc>" & strURL & "/</loc> "
foolcat = foolcat + "</url>"
session("count")=session("count")+"1"
set all_fs = Server.CreateObject("Scripting.FileSystemObject")
set all_folder = all_fs.GetFolder(server.MapPath("/"))
set all_files = all_folder.files
for each file in all_files
foolcat = foolcat + "<url>"
foolcat = foolcat + "<loc>" & strURL & "/" & File.Name & "</loc> "
foolcat = foolcat + "</url>"
session("count")=session("count")+"1"
next
dim js,sql
set js = server.CreateObject("ADODB.RecordSet")
sql = "select * from [要生成的表名] order by sid asc"    //修改你要生成的数据表名
set js = conn.execute (sql)
do until js.eof
id=""&js("id")&""   //修改为你的id字段
foolcat = foolcat + "<url>"
foolcat = foolcat + "<loc>" & strURL & "/xxx.asp?Id=" & id & "</loc> "  //修改为你的文件名称和id
foolcat = foolcat + "</url>"
session("count")=session("count")+"1"
js.movenext
loop
js.close
set js = nothing
foolcat = foolcat + "</urlset>"
foolcat = "" + foolcat + ""
foolcat = "" & foolcat & ""
FolderPath = Server.MapPath("/")
Set fso = Server.CreateObject("Scripting.FileSystemObject")
Set fout = fso.CreateTextFile(FolderPath&"\sitemap.xml")
fout.writeLine foolcat
fout.close
set fout = nothing
conn.close
set conn = nothing
Function return_RFC822_Date(byVal myDate, byVal TimeZone)
Dim myDay, myDays, myMonth, myYear
Dim myHours, myMinutes, mySeconds
  
myDate = CDate(myDate)
myDay = EnWeekDayName(myDate)
myDays = Right("00" & Day(myDate),2)
myMonth = EnMonthName(myDate)
myYear = Year(myDate)
myHours = Right("00" & Hour(myDate),2)
myMinutes = Right("00" & Minute(myDate),2)
mySeconds = Right("00" & Second(myDate),2)
  
return_RFC822_Date = myDay&", "& _
myDays&" "& _
myMonth&" "& _
myYear&" "& _
myHours&":"& _
myMinutes&":"& _
mySeconds&" "& _
" " & TimeZone
End Function
Function EnWeekDayName(InputDate)
Dim Result
Select Case WeekDay(InputDate,1)
Case 1:Result="Sun"
Case 2:Result="Mon"
Case 3:Result="Tue"
Case 4:Result="Wed"
Case 5:Result="Thu"
Case 6:Result="Fri"
Case 7:Result="Sat"
End Select
EnWeekDayName = Result
End Function
Function EnMonthName(InputDate)
Dim Result
Select Case Month(InputDate)
Case 1:Result="Jan"
Case 2:Result="Feb"
Case 3:Result="Mar"
Case 4:Result="Apr"
Case 5:Result="May"
Case 6:Result="Jun"
Case 7:Result="Jul"
Case 8:Result="Aug"
Case 9:Result="Sep"
Case 10:Result="Oct"
Case 11:Result="Nov"
Case 12:Result="Dec"
End Select
EnMonthName = Result
End Function
%>
sitemap.xml生成完毕,共生成<%=session("count")%>个文件,点击查看<a href="sitemap.xml">sitemap.xml</a>文件。

crazyc 发表于 2006-11-24 10:32

conn.asp呢?

gto889 发表于 2006-11-24 11:11

:lol: :lol:

aolber 发表于 2006-11-24 11:11

顶 收藏了

study5 发表于 2006-11-24 11:24

好东东,收藏了

sunnyv 发表于 2006-11-24 11:27

收藏

cn7788 发表于 2006-11-24 12:06

[quote]原帖由 [i]crazyc[/i] 于 2006-11-24 10:32 发表
conn.asp呢? [/quote]
那是你的自己的数据库连接文件

墨猫 发表于 2006-11-24 12:40

:( 看不懂

湘芸 发表于 2006-11-24 12:46

CONN自己写嘛:ohh:

toutou 发表于 2006-11-24 15:00

conn 可以不要的

vbplay 发表于 2006-11-24 15:37

数据量大了不行的呀.如果能自动分文件就更好了.

发表于 2006-11-24 15:49

我一百多万数据,如何生成?

梦迟晨岭 发表于 2006-11-24 18:53

[quote]原帖由 [i]vbplay[/i] 于 2006-11-24 15:37 发表
数据量大了不行的呀.如果能自动分文件就更好了. [/quote]

sql = "select * from [要生成的表名] order by sid asc"  
改成
sql = "select * from [要生成的表名] where id between 1 and 500"

就是生成1到500条,生成完这一批可以再改成

sql = "select * from [要生成的表名] where id between 501 and 1000"

根据你的服务器响应时间,懂asp的可以写成一个变量来引用。

在古狗最后提交的时候可以提交多条

未经测试啊,呵呵。

lonface 发表于 2006-11-24 19:43

*** 作者被禁止或删除 内容自动屏蔽 ***

vlin 发表于 2006-11-24 19:52

:ohh: :ohh:

cooce 发表于 2006-11-24 20:11

PHP的怎么办?

东方白 发表于 2006-11-24 20:51

:lol:

yinet 发表于 2006-11-25 13:40

[quote]原帖由 [i]cooce[/i] 于 2006-11-24 20:11 发表
PHP的怎么办? [/quote]

expert2008 发表于 2006-11-25 15:23

不错

wenwang 发表于 2006-11-25 15:59

自己写的?
琪琪小子写的才是。
还大言不惭。

页: [1] 2 3

Powered by Discuz! Archiver 6.1.0  © 2001-2007 Comsenz Inc.