对动网论坛作搜索引擎优化

类别:Asp 点击:0 评论:0 推荐:

作者:david

本文地址:http://blog.iyi.cn/user/david/archives/2005/03/261.html

今天对 车米网 的论坛作了优化,发现动网论坛7.0本来就考虑到了搜索引擎的问题,只需要简单修改就可以很好的优化了.

动网论坛采用javascript+模版的方式显示页面,服务器将没有深加工的数据和js代码一起发送到客户端解析,减轻了服务器负担,但是搜索引擎一般不会解析javascript代码的,不过动网论坛的主要页面都有判断浏览器类型,如果是搜索引擎,自动跳转到专门为浏览器显示的页面,但是这些页面做得不是太好,下面是我修改的结果:

昨天我把论坛的meta标签的description部分去掉,google发现这个标签后就会忽略下面的内容,直接区标签中的内容。

修改index.asp:

      将函数Sub Show_Index_Footer()中的

Dim BrowserType

If BrowserType.IsSearch Then Response.redirect "indexNew.asp"

提升到index.asp的前面,让页面一检测到是搜索引擎就跳转到优化后的页面,原来那样子的结果是google仅仅抓取了Show_Index_Footer()中的信息,前面的都给忽略了。

修改indexnew.asp

将Dvbbs.head()改为Dvbbs.head()

注释掉

Dvbbs.ActiveOnline()

Show_Index_Top

Show_Index_Footer

Response.Write Replace(template.html(9),"{$Getlink}",Getlink())

If Dvbbs.Forum_setting(29)="1" Then Call birthuser()

Dvbbs.Footer()

Response.Write Dvbbs.value

Response.Write template.html(8)(1)

这样子跳转后的首页显示的就相对比较简单了,但是代码还是有些冗余,如果想再精简些,就不要用dvbbs的模版了,直接用asp生成静态页面,能去掉的都去掉。

同样修改list_show.asp

将Dvbbs.head()改为Dvbbs.head()

注释掉

News

Board_Online

Show_List_Footer

Dvbbs.ActiveOnline()

Dvbbs.Footer()

再修改printpage.asp

如果你的论坛需要注册用户才能浏览,而你又要搜索引擎能够抓取信息的话,把If Dvbbs.GroupSetting(2)="0"  Then Dvbbs.AddErrcode(31)这行注释掉。

其他的没什么好改的,这个页面的模版已经做得非常精简了,你可以试着修改page_postjob模版来增加些其他的连接。

下面作一个更有实际效果的索引页面,很多不错的php论坛都有这样的页面,效果很好:

新建一个目录,随便什么,然后在里面建立一个index.asp文件,这个文件的代码我直接用了动网论坛的newtopic.asp,把里面的js去掉就行了:

<!--#include file="../conn.asp"-->
<!--#Include File="../inc/Dv_ClsMain.asp"-->
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />

<title>车米网</title>
<link rel="stylesheet" href="../style.css" type="text/css" />
</head>
<body>
<div class="main">
<div class="top"><a href="../index.asp">车米网</a> - 论坛新贴</div>
<div class="body">
<%
'DVBBS 7.0 动网论坛首页调用-----主题调用
dim bbsurl,lockboardid,picurl
'############以下为修改项######################
dim lockurl
lockurl=""
'只允许调用网址,要以"HTTP://"开头,为空则不开放此功能.(可允许多网址限制,要以","分隔。)
'例如只允许此两个网址调用: lockurl="http://www.artistsky.net/,http://www.artbbs.net/"
bbsurl="http://bbs.my-car.cn/"       '请填写你论坛的正确地址,要以"HTTP://"开头
lockboardid="1,2,3"          '请填写限制调用的论坛版块ID,用逗号隔开。(当lock参数为1,2时生效)
picurl="http://bbs.my-car.cn/skins/default/topicface/" '心情图标目录地址
'############以上为修改项######################
'bbsurl=getservepath(request.ServerVariables("server_name")&request.ServerVariables("URL"))
'function getservepath(str)
'dim tmpstr
'tmpstr=split(str,"/")
'getservepath="http://"&replace(str, tmpstr(ubound(tmpstr)), "")
'end function
'*************************************
'上传到与CONN.ASP同级的目录下
'以上地址参数一定要修改,否则所调用的链接是去了以上的论坛.
'若有问题,可以运行一起上传的newscode.ASP文件进行调试(newscode.ASP运行前要修改调用参数)
' FSSUNWIN 2003.12.31
'*************************************
'if trim(lockurl)<>"" and checkserver(lockurl)=false then
' response.write "document.write ('数据被保护,禁止被其他站点调用!"
' response.end 
'end if

Private function checkserver(str)
 dim i,servername
 checkserver=false
 if str="" then exit function
 str=split(Cstr(str),",")
 servername=Request.ServerVariables("HTTP_REFERER")
 for i=0 to Ubound(str)
 if right(str(i),1)="/" then str(i)=left(trim(str(i)),len(str(i))-1)
  if Lcase(left(servername,len(str(i))))=Lcase(str(i)) then
   checkserver=true
   exit for
  else
   checkserver=false
  end if
 next
end function

dim rs,sql
dim orders,reply,topic,isbest,lock,board,action,info,tlen,showpic
dim bname,ars
dim postinfo,postname,POSTTIME
dim NowUseBbs,boardname,boardid
dim i,k,n,sdate,searchdate
 i=0:k=0
 lock=0  'cint(trim(request("lock")))
 orders=4 'trim(request("orders"))
 boardid="all" 'trim(request("boardid"))
 sdate=3 'trim(request("sdate"))
 action=1 'cint(request("action"))
 info=3  'request("info")
 tlen=16  'request("tlen")
 reply=0  'request("reply")
 showpic=0 'request("showpic")
 n=100  'trim(request("n"))
 bname=0  'request("bname")
 if n<>"" and IsNumeric(n) then
 n=cint(n)
 else
 n=1
 end if

 if orders=1 then
  orders="hits desc,"
 Elseif orders=2 or orders=3 then
  orders="dateandtime desc,"
 end if
 If boardid<>"all" and isnumeric(boardid) then
  if boardid=444 then
  response.write "document.write ('错误的版块参数,调用被中止!"
  response.end
  Else
  board=" and BoardID="&cint(boardid)
  if lock=3 then board=" and BoardID in (select boardid from board where ParentID="&cint(boardid)&") "
  End If
 End If
 
 if lock=1 then
  board=" and boardid not in ("&lockboardid&") "
 elseif lock=2 then
  board=" and boardid in ("&lockboardid&") "
 end if

 Dvbbs.GetForum_Setting
 connectionDatabase
 if sdate<>"" and IsNumeric(sdate) then
  sdate=cint(sdate)
  if IsSqlDataBase=1 Then
  searchdate=" and datediff(day,dateandtime,"&SqlNowString&")<"&sdate
  else
  searchdate=" and datediff('d',dateandtime,"&SqlNowString&")<"&sdate
  end if
 else
 searchdate=""
 end if

 if action=1 then
  '显示主题
  if orders=2 then orders="lastposttime,"
  if orders=4 then orders=""
  set rs=conn.execute("select top "&n&" PostUserName,Title,topicid,boardid,dateandtime,topicid,hits,Expression,LastPost from Dv_topic where boardid<>444 "&board&searchdate&" ORDER BY "&orders&" topicid desc")
 elseif action=2 then
  '显示精华主题
  if searchdate<>"" then searchdate=replace(searchdate," and"," where")
  if searchdate="" and board<>"" then board=replace(board," and"," where")
  set rs=conn.execute("select top "&n&" PostUserName,Title,rootid,boardid,dateandtime,Announceid,id,Expression from Dv_BestTopic  "&board&searchdate&"  ORDER BY "&orders&" id desc")
    else
     '显示主题或回复
  set rs=conn.execute("select top "&n&" username,topic,rootid,boardid,dateandtime,announceid,body,Expression from "&Dvbbs.NowUseBBS&" where (not boardid=444) "&board&searchdate&" ORDER BY "&orders&" AnnounceID desc")
 end if
 If Not RS.Eof then
  SQL=Rs.GetRows(-1)
  else
  response.write "暂未有新帖子!"
  response.end
    end if
    rs.close
 set rs=nothing

 For i=0 To Ubound(SQL,2)
  topic=SQL(1,i)
  if topic="" then
   topic=SQL(6,i)
  end if
  Topic=Stringhtml(topic)
  if len(topic)>Cint(tlen) then
   topic=left(topic,tlen)&"..."
  end if
  
  postname=SQL(0,i)
  POSTTIME=SQL(4,i)
  if action=1 and reply=1 then
   if SQL(8,i)<>"" then
   postinfo=split(SQL(8,i),"$")
   postname=postinfo(0)
   POSTTIME=postinfo(2)
   end if
  end if
  response.write "<li class=list>"
  if showpic=1 then
  response.write "<IMG SRC="""&picurl&SQL(7,i)&""" BORDER=0 >"
  else
  end if
  if bname=1 then
   set ars=conn.execute("select BoardType from Dv_board where boardid="&SQL(3,i))
    boardname=ars(0)
    ars.close
    response.write "[<a href="&bbsurl&"list.asp?boardid="&SQL(3,i)&" target=""_blank"">"&Dvbbs.htmlencode(boardname)&"</a>] "
  end if
  response.write "<a href="&bbsurl&"printpage.asp?boardid="&SQL(3,i)&"&ID="&SQL(2,i)&"&replyID="&SQL(5,i)&" target=""_blank"" title="&Topic&">"
  response.write ""&Topic&""
  response.write "</a>"
  select case cint(info)
  case 0
  case 1
  response.write " (<a href="&bbsurl&"dispuser.asp?name="&postname&" target=_blank>"&postname&"</a>,<font color=green>"&formatdatetime(POSTTIME,0)&"</font>)"
  case 2
  response.write " (<font color=green>"&POSTTIME&"</font>)"
  case 3
  response.write " (<a href="&bbsurl&"dispuser.asp?name="&postname&" target=_blank>"&postname&"</a>)"
  case 4
  response.write " (<a href="&bbsurl&"dispuser.asp?name="&postname&" target=_blank>"&postname&"</a>"
  if cint(action)=1 then response.write ",<font color=green>"&SQL(6,i)&"</font>"
  Response.Write ")"
  case 5
  if cint(action)=1 then
  response.write "(<font color=green>"&SQL(6,i)&"</font>)"
  end if
  case 6
  response.write " (<a href="&bbsurl&"dispuser.asp?name="&postname&" target=_blank>"&postname&"</a>,<font color=green>"&formatdatetime(POSTTIME,1)&"</font>)"
  case 7
  response.write " (<font color=green>"&formatdatetime(POSTTIME,1)&"</font>)"
  case else

  end select
  response.write "</li>"
  k=k+1
 Next
 Call CloseObject

 Sub CloseObject()
  Set template = Nothing
  Set MyBoardOnline = Nothing
  Set Dvbbs = Nothing
  Set Conn = Nothing
 End Sub

 Function Stringhtml(str)
  Dim re
  Set re=new RegExp
  re.IgnoreCase =True
  re.Global=True
  're.Pattern="<(.*)>"
  'str=re.replace(str, "")
  re.Pattern="\[(.*)\]"
  str=re.replace(str, "")
  str = Replace(str, CHR(34), """")
  str = Replace(str, CHR(39), "\'")
  str = Replace(str, CHR(13), "")
  str = Replace(str, CHR(10), "")
  str = replace(str, ">", "&gt;")
  str = replace(str, "<", "&lt;")
  if str="" then str="..."
  Stringhtml=str
 End Function
%>
</div>
</div>
</body>
</html>

效果见http://bbs.my-car.cn/newtopic

然后再去修改indexnew.asp,加上这个页面的索引就行了。

剩下的大家去挖掘吧~哈哈

本文地址:http://com.8s8s.com/it/it7175.htm