asp网址伪静态制作asp伪静态技术


    文章查看: 次    imgohome 发表于:2010年8月13日    已有0条评论    我来说两句 添加到百度搜藏 添加到百度搜藏

  ASP伪静态技术 QQREADER52BE29381FA97E30

  一、伪静态是什么技术?

  所谓静态的意思,就是地址中不带问号。

  二、伪静态技术有什么好处?

  Web应用程序最大的特点之一就是无状态,当一个页面跳转到另一个页面时,那么这个页面上的所有参数

  都将抛弃,所以动态页面一般利用url地址来保存其参数,就像:

  www.imgohome.com/essay.asp?id=1

  这样,搜索引擎在录取该页面时,可能会因为问号而进入死循环(以前动网就有这样一个漏洞,蜘蛛进去

  出不来了),所以很多时候带问号的地址是不会进去的,这样便降低了页面的收录效率。

  既然这样,那么选用不带问号的url不是可以更好的让搜索引擎收录自己的网页?的确。静态网页的url正好

  不带问号,所以我们要伪造静态,目的就是为了SEO,提高网站的收录效率。

  三、三种方法实现静态

  1、 重写url参数

  参数过多,也不利于搜索引擎收录,故可以通过修改参数实现静态。

  先看动态的url地址,当我们点击它时,页面跳转到essay.asp页面的同时,还传递给页面一个参数id=1,然

  后我们取得了id的值,再由"select * from article where id="& ID 找到对应的记录。由此可知,整个过程的

  关键是取得参数的值,所以,也可以在静态的url包含该参数的值。

  又要包含参数的值,又要考虑静态,于是得出一个解决方案,即要实现这样的转换:

  www.oursn.com/essay.asp?id=1

  www.oursn.com/essay.asp?/1.html

  比较两个url的格式,我们仅仅改变动态地址的参数,这种方式叫作重写url参数法。

  不过它也存在表面和内在的缺陷。例如,它仍然存在.asp的记号,更重要的是它并没有去掉问号。

  2、 ISAPI_Rewrite程序

  ISAPI_Rewrite是一个强大的基于正则表达式的url处理引擎。它是专为IIS设计的。ISAPI_Rewrite有两个版

  本:ISAPI_Rewrite Full与ISAPI_Rewrite Lite。ISAPI_Rewrite Lite是免费版本,但不支持反向代理功能。

  ISAPI_Rewrite Full只能下载到30天的试用版本。

  用ISAPI_Rewrite实现asp的静态化,将动态网页链接rewriting成静态链接是最保险和稳定的面向搜索引擎

  优化方式。但这种方式不支持虚拟站点。而且对于虚拟主机的站长不太实用或太麻烦。

  3、 XMLHttp组件

  当我们做好一个asp程序后,如果某个页面长期不做修改,那么我们是不是可以考虑将它生成静态页呢。就

  好象有一个leave.asp页面,若这个页面长期不做修改,那么我们可以利用某种方法将它生成一个leave.htm

  页面,这种方法就是用XMLHttp组件。

  四、伪静态原理

  1、 重写url参数

  其基本原理和动态url一致,都是截取参数值,只不过url的写法不同罢了。

  前台的核心代码:

  var id=parseInt(sParam.replace("/","").replace(".html",""));

  后台的核心代码:

  var sParam=String(Request.ServerVariables("QUERY_STRING"));

  var id=parseInt(sParam.replace("/","").replace(".html",""));

  2、 ISAPI_Rewrite程序

  通过正则表达式重写url地址实现静态,正则表达式在httpd.ini中编辑。其格式为:

  RewriteRule /test-([0-9,a-z]*).html /test.asp\?id=$1

  RewriteRule是关键词,必须有的,没为什么。

  /test-([0-9,a-z]*).html /:两跟正斜杠里编辑想要的静态地址的正则表达式。

  test.asp\?id=$1:动态url的原型

  这种方式仍然是在通过修改参数的位置实现静态,但和上面提到的修改参数位置不同的是:它的url中不包

  含.asp等动态url的特征,而且也没有问号。

  3、 XMLHttp组件

  用XMLHttp组件实现的静态是真正的静态,因为它生成了真正的html文件,当页面跳转时,首先访问的是

  html文件,再访问的是asp文件。

  用户点击链接时,首先发送异步请求,返回请求页面的所有内容,包括文本和二进制。然后把这些内容输入

  到Stream对象里进行保存,从而生成与动态页面同名的html文件,这样就实现了静态。

  五、方法学

  最重要,也是最激动人心的时候来了。现在,我将一步一步地拨开这三种方式的神秘面纱,并且实现相应的功能代码……

  1、 重写url参数

  Step1: 建立前台文件index.asp,修改url参数形式。由于读取数据库中的记录不是专题的重点,故直接给出:

  Step2:为了达到伪静态的目的,就必须在前台页面加上伪静态的代码。接下来就要修改url的参数形式:

  在两边插入.html">和,即.html">。

  1、Article.asp?/.html:这句代码实现了伪静态,当点击该链接后,地址显示的就是href的值。

  2、至此前台脚本就写完了,最关键的一句就是article.asp?/.html。接下来写后台的处理数据。

  index.asp:

  .html">

  Step3:新建一个后台文件Article.asp,保存核心代码。由于连接数据库不是本专题的重点,故直接给出:

  /*连接数据库的代码*/

  标题:

  /*显示记录*/

  内容:

  Step4:由于传递进的url包含参数,故首先截取参数:

  var sParam=String(Request.ServerVariables("QUERY_STRING"));

  1、ServerVariables是asp的环境变量,UERY_STRING保存了动态url的参数。例如,如果url是www.oursn.com/essay.asp?/1.html,那么sParam保存的值就是问号以后的字符串,即sParam=/1.html。

  2、String()是将参数强制性转化为字符串,这里Request .ServerVariables返回的是一个对象object,而不是字符出串,故需要转化。

  Article.asp:

  /*连接数据库的代码*/

  标题:

  /*显示记录*/

  内容:

  Step5:截取参数字符串后,进一步获取id的值,这里是数字1,可以通过字符串方法replace()来实现:

  var id=parseInt(sParam.replace("/","").replace(".html",""));

  1、sParam.replace("/","")是用空格代替了sParam中的斜杠,即1.html。

  2、sParam.replace("/","").replace(".html","")是用空格代替了1.html的. Html,即1,但这时的1还是字符串,再通过parseInt()强制转化为整型,最后赋给id。则id中保存是值型的1。

  Article.asp:

  /*连接数据库的代码*/

  标题:

  /*显示记录*/

  内容:

  config.asp中的代码:

  2、 ISAPI_Rewrite程序

  Step1: 下载ISAPI_Rewrite,下载地址:http://www.helicontech.com/download/。

  PS:ISAPI_Rewrite分精简(Lite)和完全(Full)版. 精简版不支持对每个虚拟主机站点进行重写,只能进行全局处理。

  Step2: 安装.msi的文件。

  Step3: 打开Internet 信息服务,右键web站点属性,ISAPI筛选器选项卡.添加筛选器,名称自己填,路径自己指定ISAPI_Rewrite.dll,然后确定。

  1、web站点不是虚拟目录,而是与默认网站相同树根的站点,这一点要小心。

  2、ISAPI_Rewrite安装好后,不要修改它的默认。

  Step4:添加rewrite规则。找到ISAPI_Rewrite目录,把httpd.ini的只读属性去掉,打开编辑.我们要把essay.asp?id=1映射成为essay-1.html这样的类型,需要在httpd.ini里加上这么一行:

  RewriteRule /essay-([0-9,a-z]*).html /essay.asp\?id=$1

  Step5:来测试一下:

  1、test.asp,里面写上

  2、在httpd.ini里加上这么一行:

  RewriteRule /test-([0-9,a-z]*).html /test.asp\?inso=$1

  3、保存.

  4、到浏览器里查看一下效果吧.输入http://127.0.0.1/test.asp?inso=im286和http://127.0.0.1/test-im286.html,显示的内容都是im286。

  3、 XMLHttp组件

<%@LANGUAGE="JAVASCRIPT" CODEPAGE="936"%>

<%

function saveData(body,path)

{

var os = Server.CreateObject("adodb.stream");

os.Type=1;

os.Mode=3;

os.Open();

os.Write(body);

os.Position = 0;

os.Type = 2;

os.Charset = "gb2312";

os.SaveToFile(path,2);

os.Close();

os = null;

}

var xmlHttp = Server.CreateObject("Microsoft.XMLHTTP");

xmlHttp.Open("GET","http://localhost/night/index.asp",false);

xmlHttp.Send();

saveData (xmlHttp.responseBody,Server.MapPath("/index.html"));

Response.Write ("保存成功,请打开<a href=/index.html>/temp.html</a>查看");

%>



文章标签: 网站建设
本文地址:http://seo.imgohome.com/Seo/51.html

评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。