全能空间能够实现静态化(2):ASP及其它语言

王志勇 发表于 2011年02月26日 16:03

在前面一篇的404.php这个文件,是我编写的程序实例,这段程序是一个主要的原理,你也可以根据需要来编写或者改进程序。由于时间的关系,当中没有写ASP实现静态化的程序。首先使用全能空间是迫不得已,这2篇文章并不是鼓励读者使用全能空间,而是鼓励读者、以及服务商使用Linux空间,转向PHP,国外很多的网站,都是使用PHP语言开发,甚至也有很多的主机服务商只有使用Linux系统的PHP主机,而不提供Windows主机。PHP的确有很多的优势、优点,是ASP无法媲美的,最显而易见的优点是程序简洁、函数丰富。程序简洁是因为其语句每句都以分号结束,而ASP必须回行,对于常用的程序,PHP可以把它们放在一行,这样在视觉上能大量地减少程序的复杂程度,这也是PHP比ASP开发速度快很多倍的原因之一。学习编程,并不需要精通,因为无论是大型的项目,还是小型的项目,实际的开发中,使用到的编程知识可能不到千分之一,虽然程序总是很复杂(实际上就是麻烦),复杂是因为有大量的问题需要处理,使程序经常是处于凌乱的状态。由于凌乱、以及大量语句的堆积,使其变得复杂。并且有时编程工作越做越多,永远都有做不完的事,永无止境。

这2篇文章的出发点是如果不得不用全能空间,还是可以实现网址静态化的。我不知道之前有没有人用过这种方法,但我也发现了这种方法,于是写了这2篇文章。虽然篇幅稍长了一点,初次使用本方法需要做大量的测试,但是当理解了此方法的原理、熟悉了它的使用步骤,此方法确实是比较简单的。

上一篇的404.php程序,http://www.auiou.com/relevant/00000657.jsp,对于使用全能空间的PHP程序适用。但ASP不能用同样的程序原理,因为PHP的include()函数中可以使用参数,而ASP的include则不能使用参数,由于这一点的差别,使ASP十分不方便。经过测试,PHP与ASP也不能混用,例如写一个测试页404.php,写入包含语句:include("aa.asp"),访问404.php时,仍然会将aa.asp识别为是PHP程序,而不是ASP程序。

经过多次的测试,只能用file_get_contents()函数外部调用的办法。由于ASP语言的include不能使用参数,所以只能借助PHP平台,你还需要掌握一定的PHP知识。全能空间ASP语言实现网址静态化的步骤如下:

1、如果你的网站有控制面板,可以设置404错误页,或者让服务商帮助设置404错误页,此404错误页是根目录的404.php。(而不是404.asp)

2、404.php写入如下程序,实现的原理从下面的程序也可以看出来:
<?$j=explode("/",$_SERVER['REQUEST_URI']);$a1="$j[1].asp";$i="au/$a1";
if (file_exists($i)){header("HTTP/1.1 200 OK");$i=@file_get_contents("http://www.yourdomain.com/au/$a1");echo $i;$i="";}
else header("HTTP/1.1 404 Not Found");?>

3、把要实现静态化的ASP程序,全部放在根目录的au文件夹中。例如把abc.asp放在au文件夹中,实际路径即是/au/abc.asp,实现静态化后的效果是http://www.yourdomain.com/abc/或http://www.yourdomain.com/abc/1234或http://www.yourdomain.com/abc/1234.html或http://www.yourdomain.com/abc/def/1234.asp等等任意你喜欢的效果,然后在abc.asp写相关的程序获取地址栏信息。

说明:首先要了解的是使用file_get_contents()函数是用来调用远程数据,可能会在一定程度上影响速度;但是由于调用的数据与404.php文件是在同一台服务器,所以可能对速度的影响不大。上述的程序中,为什么一定要用http://www.yourdomain.com……的方式,而不用$i=@file_get_contents("au/$a1");这样的方式?因为我用$i=@file_get_contents("au/$a1");这样的方式测试过,也成功了,但是ASP程序不执行。理论上ASP是可以正常执行的,但是它不执行,所以只能暂时用http://外部调用的方式。使用外部调用的方法,可能并不太适合大型的网站,博客只能凑合用这种方法。因为博客的流量较大,可以算是中型、或中小型的网站。用此方法,静态化后的地址同样不能用GET或POST。

需要特别注意的是$j[1].asp,与前面第1篇的说明一样,由于不同空间,配置环境不一样,需要先在网站的根目录建立一个测试页,查看返回地址栏的值,在Apache环境下测试返回的值是以/开头的,IIS环境下可能是很长的路径,如果是这种情况,需要把上述程序中的$j[1].asp,改为$j[4].asp或者其它的值,逐一测试。否则,会导致无法成功,因为这是十分关键的一步。

关于404.php这个文件的编码问题。使用默认的ANSI编码即可,如果被它包含的文件、或者被它远程调用的文件是UTF-8编码,经过我长期的测试,并不会影响使用。

除了ASP语言,其它语言,都可以用本篇的方法,也就是404错误页一律使用404.php,在404.php中写入PHP程序,借助PHP平台,然后用file_get_contents()远程调用。如果你所使用的编程语言的include函数(方法)能像PHP一样能够使用参数,404错误页则需要用你所使用的语言,按照第1篇的404.php的程序,改为相应的语言即可。

3条评论:
1   自由勇 2011-02-26 16:19
Trackback来自《全能空间能够实现静态化(伪静态)(已测试成功)

ASP与上面PHP的方法是类似的,步骤和原理大致相同。

2   深圳律师 2011-02-26 22:52
来王先生博客,能学到知识
3   GoodCMD 2011-02-27 21:17
勇哥,还是你的水平高一些,ASP的都能想到方法,看来真是“没有做不到,只有想不到”。
你加粗的那一段话我很赞同,说的真好。

发表评论:
名字: (*必填)
博客: (可省)

正文:

  记住信息?

直接发送Trackback到此文章

说明:本评论系统不支持HTML代码。(您的留言需要审核,审核规则请见这里。)

王志勇:程序设计者。
1980-09-26 (38周岁)

版权声明:本博客所有文章,均符合原创的定义,禁止转载,违者将必究;正确的方法是贴原文的标题和网址即可。

Blog存档 Archives

2018年10月
2018年09月(17)
2016年-2017年(9)
2014年06月-09月(10)
2013年 +

2012年 +
2011年 +
2010年 +
2009年 +
2008年 +
2007年 +
2006年 +
2005年09月(4)

Copyright © 2006-2018 auiou.com All rights reserved.
此Blog程序由王志勇编写 已经发布在Arsue