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

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

全能空间是中国的主机商广泛使用的,在国外相对成熟的主机商几乎是没有全能空间的。在有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文件,编写相关的程序语句即可直接实现。

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

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

自由勇 2018-11-04 10:30
谢谢!ASP可以做到,不难。其实PHP比ASP更容易。
JSP开发的时间比较短。以前主要做ASP开发,后来主要做PHP开发。

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

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

3   自由勇 2018-11-06 07:23
Trackback来自《VPS的快速安装和PHP调试导航页

虽然这些文章正在增多,但实际上,VPS的安装、配置比我们想象中容易得多,新机通常在半小时内能完成整个安装、配置。

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

正文:

  记住信息?

王志勇:1980-09-26 (44周岁)
程序设计,前端设计。

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

与此相关的链接
自由勇专栏

Blog存档 Archives

2022年07月
2022年06月(15)
2022年05月(20)
2022年04月(16)
2022年03月(9)
2022年02月(9)
2022年01月(10)
2021年 +

2020年 +
2019年 +
2018年 +
2016年-2017年(9)
2014年06月-09月(10)
2013年 +
2012年 +
2011年 +
2010年 +
2009年 +
2008年 +
2007年 +
2006年 +
2005年09月(4)

Copyright © 2006-2024 auiou.com All rights reserved.
此Blog程序由王志勇编写