全能空间能够实现静态化(伪静态)(已测试成功)

王志勇 发表于 2011年02月25日 12:08

全能空间是中国的主机商广泛使用的,在国外相对成熟的主机商几乎是没有全能空间的。如前的测试:http://s.orshu.com/#45,在有HTML代码或文本输出的时候,循环100万次,都是在Windows XP系统下,IIS+PHP运行31秒完成,Apache+PHP使用1秒完成,速度差别如此之大。当时之所以做这个测试,是因为当时有一个循环几十次的页面,在IIS+PHP下数据是逐行显示,后来安装了Apache+PHP是一瞬间全部显示。

除了在大流量的情况下,IIS+PHP的速度远不如Apache+PHP之外,使用IIS+PHP的全能空间,不支持.htaccess文件。当然,在小流量的情况下,速度差别可能不是很大。如果不得不使用全能空间(因为国内的Linux主机实在是太少了),可喜的是,大多数使用IIS平台的服务器商,都支持自定义404错误页。Apache可以使用一个.htaccess文件可以为整个网站自定义404错误页,也可以每个文件夹单独使用一个.htaccess文件。但IIS,服务商可能一个站点只允许设置一个404错误页,所以本文的方法是使用根目录的404.asp或404.php,用这个文件来判断、自动包含相关的程序文件。总的来说,IIS+PHP有很多功能还是不如Apache+PHP那样方便的。今天经过测试,全能空间也能够使用用错误页,所以写了本文。由于本文是使用IIS的错误页实现静态化,所以不需要配置其它的文件如.htaccess文件、.config文件、也不需要配置Rewrite模块,是比较简单的

IIS下要实现静态化(伪静态),如果你的网站有控制面板,可以设置404错误,一般服务商是让404错误页放在根目录,ASP语言为404.asp,PHP语言为404.php。如果没有控制面板,可以让服务器商手动设置一下。要实现静态化,需要学习一定的编程知识,在本机调试成功后,再上传,因为需要有大量的调试才会成功。本文的方法可能是书上没有的,也是我很常用的方法,这里举例说明如何实现:

以PHP为例:

将自定义错误页设置为根目录的404.php。404.php写入如下的程序:
<?$j=explode("/",$_SERVER['REQUEST_URI']);$i="au/$j[1].php";
if (file_exists($i)){header("HTTP/1.1 200 OK");include($i);}
else header("HTTP/1.1 404 Not Found");?>

说明:在本机测试中,我安装了IIS+PHP,因为IIS下为虚拟目录设置错误页为404.php,但没有成功,所以本机不使用IIS+PHP测试。在本机测试中使用Apache+PHP,并且在本机设置了虚拟主机。在PHP方面,Apache对于PHP要比IIS简化许多,IIS相对更麻烦一些。
本机使用Apache+PHP+本机虚拟主机来测试,并不影响上传到服务器的效果,效果是一样的,服务器的配置是IIS+PHP+远程虚拟主机。在PHP编程中,在本机设置虚拟主机是很必要的,可以减少很多不必要的麻烦,Apache在本机设置虚拟主机很简单,前面已写过,如http://www.auiou.com/relevant/00000576.jsp

第一行$j=explode("/",$_SERVER['REQUEST_URI']);用于获取地址栏,$j[1]是根目录下的第1个层目录名,同理,$j[2]是第2个目录名、$j[3]是第3个目录名,等等,这也是我很常用的读取地址栏的方法。由于不同空间,配置环境不一样,需要先在网站的根目录建立一个测试页,查看<?=$_SERVER['REQUEST_URI']?>返回地址栏的值,Apache环境下返回的值是以/开头的,IIS环境下可能是很长的路径,如果是这种情况,需要把上述程序中的$j[1].php,改为$j[4].php或者其它的值,逐一测试。否则,会导致无法成功,因为这是十分关键的一步。au/$j[1].php,其中au需要在根目录建立一个au的文件夹,需要实现静态化的程序文件全部放在au文件夹。从第2行,可以看出其原理,就是判断au文件夹中的文件是否存在,如果存在,则包含调用;如果不存在,则返回404代码。其中最后一行让不存在时返回404代码,是不可省略的,因为我经过测试,很多全能主机,当设置了404错误页后,访问不存在的文件时,返回的是200正常代码,这会导致搜索引擎错误收录,而降低网站的权重。

要特别注意的是,网页上传到服务器后,如果静态化的网页可以显示,要测试一下网页的状态码,如果返回的不是200页,要修改header("HTTP/1.1 ……")的语句,例如header("Status: 200 OK");以及header("Status: 404 Not Found");。国外的Linux主机较多地可以使用header("Status: 200 OK");语句,国内主机则较多地可以使用header("HTTP/1.1 200 OK");语句。

把所有需要实现静态化的程序文件全部放在au文件夹,如下图:

/au/abc.php程序的在本机的预览效果如下图,上传到IIS+PHP的服务器也是这样的效果:

/au/defer.php程序在本机的预览的效果如下图:

ASP与上面PHP的方法是类似的,步骤和原理大致相同,只要把PHP语句转化为ASP语句。因为测试和转化要比PHP复杂一些,本文暂省略这部分程序,如果有网友需要,我再测试ASP下的静态化。(附:ASP的实现方法,已写在这里:http://www.auiou.com/relevant/00000658.jsp)因为404.asp在IIS下可执行,所以IIS+ASP一定可以实现地址栏静态化。在此也顺便提一下,我从事了6年多的ASP编程,2002年~2009年,后来转向PHP。ASP比PHP繁琐许多,祝大家早日投入PHP的怀抱,因为PHP比ASP容易很多。

如前面的实际测试:Rewrite与404页的区别,http://www.auiou.com/relevant/00000525.jsp,使用404页的页面,既不能获得地址栏的GET,也不能接收POST,但Apache的Rewrite页既可以用GET,也可以用POST。使用本文的方法,如果需要使用GET或POST,只能建立一个实际路径的PHP页或ASP页。

Apache+PHP实现静态化,建立.htaccess文件,编写相关的程序语句即可直接实现。

2条评论:
1   GoodCMD 2011-02-26 12:59
asp可以做吗? 好像很难吧!!

勇哥,你做jsp开发多长时间,看来你是“全能型”人才啊!

2   自由勇 2011-02-26 16:16
Trackback来自《全能空间能够实现静态化(2):ASP及其它语言

《全能空间能够实现静态化(伪静态)(已测试成功)》一文中的404.php程序,对于使用全能空间的PHP程序适用。

发表评论:
名字: (*必填)
博客: (可省,仅限于Blog地址)
验证码: p48u58r68e78 (*必填)

正文:

  记住信息?

直接发送Trackback到此文章

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

文章分类 Category:
真相与UFO Truth and UFO
编程 Program
PHP
Blog的发展 Development
为什么写博客 W-do we Blog
互联网 Internet
BBS社区研究 Community
QQ研究 QQ Research

置顶的文章:
程序开发的门槛儿
为什么不能夸孩子调皮?
我的3种博客写作方法
最大的公益事业是UFO
再谈四维空间
开发文档和程序注释
Arsue Blog程序的扩展
独立微博开发之设想

近期的主题:
2017.7第2篇
auiou.com今天换上了KVM
CentOS, Debian, Ubuntu三种VPS系统的LAMP属性小结
Debian 6.0和Ubuntu 14.04新装机的参数记录
Linux VPS的速度优化
Nginx与.htaccess
CentOS 6新装机的参数记录
auiou.com的VPS的内存占用测试
2016年8月第一帖
不喜欢锻炼身体的朋友
看《第五空间》
看《爱情公寓》的一点感想
生命的意义在于每一天都是人生的开始
安卓机顶盒收到小记
人生中最可怕的事情是拖延
不能贪吃/不能贪喝/不能贪凉
“世面”和人生意义
计划推出一个重要的“网络存档”(网络记事本)快速小程序
最近几个月博客更新减缓的原因
汽车越来越多
编写完成了清爽的贴吧浏览程序/贴吧占用内存测试
猫/无线路由器/瑞银无线网卡 最简单有效的散热方法
最近录制的歌
家用无线路由器选购的一些建议
网络电视机顶盒选购的一些建议
无线路由器当作无线交换机实例
2013-08-08:人生的意义&谨言慎行
怎样对治重症的拖沓的毛病?
磊科NW336无线网卡使用感受
腾达311R无线路由器频繁掉线解决一例(其它品牌和型号可能也适用)
网络电视杰科T1使用感受(杰科T1/T2/T3怎么样?)
人为什么会无聊?无聊的时候该做什么?
2013-07-14:看不见的全息摄像机
想法:2013-07-12
有趣的植物3:景天科多肉植物
有趣的植物2:米邦塔食用仙人掌
最有趣的植物
想法:2013-06-30
好好地修心
中国现代和未来的黑人问题/广州黑人
KVM主机竟然死机
想法:2013-06-13
行人的过错
为什么不能夸孩子调皮?/怎样教出一个好孩子?
打招呼的一瞬间
欢迎哥们儿们加我的QQ
好心一定会有好报
拜金女的下场都是不好的
最近很忙,写作的思路断了
狂做好事,消除烦恼
最大的公益事业是UFO/怎样做UFO研究?
  

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

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

与此相关的链接
自由勇专栏 | Arsue官方Blog
Gratitude | Time | Auciou
matnue | aucist | Taimt | Caimt | ac315 | Arsue | IC Search | TDNote | HKANS | aroat | Vaimt Panel | txfor | 网树 | cdfor | aufirm | Emxel | ixnes | AnyDiary | Tuarm | Tovate | Urtal | coumit | cersta | tratom | 性格追踪仪54.196.47.145 2018-04-26_09:27

Blog存档 Archives

2013年08月(9)
2013年07月(6)
2013年06月(7)
2013年05月(22)
2013年04月(17)
2013年03月(20)
2013年02月(21)
2013年01月(6)
2012年12月(3)
2012年08月(8)
2012年07月(4)
2012年06月(4)
2012年05月(6)
2012年04月(13)
2012年03月(11)
2012年01月(7)
2011年10月(8)
2011年09月(4)
2011年08月(2)
2011年06月(2)
2011年05月(6)
2011年04月(10)
2011年03月(16)
2011年02月(16)
2011年01月(15)
2010年12月(12)
2010年11月(9)
2010年10月(3)
2010年05月(4)
2010年01月(7)
2009年12月(10)
2009年11月(4)
2009年10月(8)
2009年09月(24)
2009年08月(20)
2009年07月(6)
2009年06月(11)
2009年05月(16)
2009年04月(20)
2009年03月(29)
2009年02月(18)
2009年01月(15)
2008年12月(17)
2008年11月(10)
2008年10月(13)
2008年09月(8)
2008年08月(4)
2008年07月(5)
2008年06月(9)
2008年05月(12)
2008年04月(15)
2008年03月(26)
2008年02月(22)
2008年01月(29)
2007年12月(30)
2007年11月(28)
2007年10月(30)
2007年09月(8)
2007年08月(8)
2007年07月(21)
2007年06月(23)
2007年05月(31)
2007年04月(34)
2007年03月(29)
2007年02月(18)
2007年01月(41)
2006年12月(23)
2006年11月(10)
2006年10月(10)
2006年09月(29)
2006年08月(33)
2006年07月(17)
2006年06月(30)
2006年05月(4)
2006年01月(3)
2005年09月(4)


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