ASP彻底实现伪静态化html

王朝互联网·作者佚名  2011-12-16
窄屏简体版  字體: 小  |  中  |  大  |  超大  

这段时间在网上待的时间较多!为了查找关于实现ASP动态内容的静态化处理花了我的多少时间,到处看了下,大多数是转载而来,几乎雷同,主要有以下几种方法:

1 > 用程序写到硬盘.ASP FS对象的文件流处理.每个文章都有实际的路径.如果要发布大量内容,则需要大容量空间,而且不好维护,修改都不方便,好处在于减轻服务器的访问负担,容易被搜索引擎收录,大大减少并防止黑客攻击,稍有规模的网站都全部静态化了,如新浪,搜狐等.

2 > 组件如ISAPI_Rewrite重写.有自己服务器的站长还好办,虚拟主机的朋友就稍麻烦,除非请求服务商安装这个插件,再将程序参数提交服务器实现转化,看上去是静态化了,实际上是用静态路径访问数据库的内容.对于搜索引擎收入有一定作用.而且许多站长正是为此为苦苦寻找.

以上两种方法俱体怎么做,大家上网搜索一下就会发现一大把....

3 >第三种比较假就是把show.asp?id=26 转成show.asp?/26.html这样做也许对搜索引擎来说有点作用,不过防安全注入一点作用也没有.但只要做好防范工作,这种方法还是比较适合大多数虚拟主机的站长们.我这里就重点介绍使用第三种方法来实现静态化处理.

本实例实现效果:http://faninfo.cn/news.asp?id=201转换成

http://faninfo.cn/news/?/201.html

(转载请注明起步者博客faninfo.cn/blog)

--------------

一 准备工作

在网站目录新建文件夹news,并新建一个主页文件index.asp,数据库data.mdb(字段id,Title,Content,)及ConnDB.asp

二代码实现

数据连接文件ConnDB.asp

<%

dim conn

dbpath="data.mdb"

Set conn = Server.CreateObject("ADODB.Connection")

connstr="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath(dbpath)

conn.open connstr

If Err Then

err.Clear

Set conn = Nothing

Response.Write "数据库连接出错,请稍候访问。"

Response.End

End If

'新闻阅读模块

Dim News_title,News_content

Sub ReadNews()

set rs1=server.createobject("adodb.recordset")

sql1="select id,title,content from article where id="& ID

rs1.open sql1,conn,3,3

News_title=rs1("title")

News_content=rs1("content")

rs1.close

set rs1=Nothing

End Sub

%>

news-list.asp

<!--#include file="ConnDB.asp"-->

<ol>

<%

Set rs=server.CreateObject("adodb.recordset")

sql="select * from Article"

rs.open sql,conn,1,1

do while not rs.eof

%>

<li><a href="news/?/<%=rs("id")%>.html"><%=left(trim(rs("title")),30)%></a></li> _fcksavedurl=""news/?/<%=rs("id")%>.html"><%=left(trim(rs("title")),30)%></a></li>"

<%

rs.movenext

loop

rs.close

set rs=Nothing

%>

</ol>

好了,现在编写新闻正文阅读页面news/index.asp

index.asp

<!--#include file="ConnDB.asp"-->

<%

id=request.QueryString("id")

If id="" Then

Pater=Request.ServerVariables("query_string")

id=Int(replace(replace(Pater,"/",""),".html","")) 'replace替换函数,如将html和/替成空的

End If

Call ReadNews()

%>

<div>

<b><%= News_title%></b><br /> '主题

<%=News_content%> '正文

</div>

这样实现的效果如:http://www.faninfo.cn/news/?/201.html 我们知道Windows文件夹命名规则

是不允许包含?的所以在这里只起视觉欺骗的作用.

同样我们能否将?通过replace函数转换成这种效果:http://www.faninfo.cn/news/read/201.html 呢?

这是我目前总结出来的,准备用在我的主页上,演示地址:http://www.faninfo.cn(未完),当然,我相信会有更好的解决方法,如果有兴趣的朋友请来本站交流.

(转载请注明起步者博客/blog http://faninfo.cn)

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝網路 版權所有 導航