2010年12月15日 13:45
如果.htaccess文件放在需要设置时区的程序的同一目录里,当更换空间时,这些.htaccess文件都需要修改。因为需要用到设置时区的网页,通常是极少数的,占网站的很小一部分,例如发表留言程序,有记录时间的程序,所以我是在数据库里建立一个值,然后在PHP文件里调用这个值。当更换空间时,只要一次修改一下这个值即可,所以用程序来设置时区是相当最好的办法。
2010年08月26日 09:44
cpfor.com的论坛是orshu.com的子论坛,使用同一个数据库,所以用户只需要在cpfor.com或者orshu.com注册一个用户名即可,不需要重复注册。也就是,在orshu.com注册的用户名,在cpfor.com也可以登录;相反亦可。但并不是多域名绑定同一个空间,而是多域名使用同一个数据库。
这个新版的论坛程序,是采用多域名的泛域名解析、或者二级域名,共同使用orshu.com的程序和数据库。对于用户而言,只要在orshu.com或其它域名的子论坛当中注册一个用户名即可,不需要每个不同域名都注册一个帐号,有些类似于“通行证”,我原先想把这个帐号命名为“Orshu通行证”,现在暂时命名为“Orshu帐号”。
这个新版的论坛程序,支持多版块、多语言,论坛同时支持中/英文。但是因为时间的关系,orshu.com的论坛目前只用于中文,程序中已包含中/英文语言的切换,预留了此重要的功能。当增加新的语言时,只需增加相应的语言包即可。简体中文/繁体中文的切换,是使用JavaScript的方式,可以节省很多的服务器资源,又减少开发的成本。因为汉字的字符ANSI编码占2个字节,汉字的字符UTF-8编码占3个字节,所以orshu.com的论坛程序语言使用GB2312,编码使用ANSI(936)。而英文字母、数字的的编码,无论是UTF-8还是GB2312,都是占用1个字符,所以使用UTF-8语言和编码的英文的论坛程序需要使用其它的域名。
ufoaq.com是我开发的第1个PHP标题列表式论坛程序,当时是单版块的。后来改为多域名、多版块、多语言,现在又改成了新的orshu.com程序,最近开发了上传图片、游客不需要注册、认证游客、黑名单等功能。为了用户不需要重复注册帐号,也为了管理方便,ufoaq.com的帐号有可能会合并到Orshu帐号。
TGF是我开发的第1个PHP留言板式的封闭式论坛程序,用了300多小时开发完成,http://www.auiou.com/relevant/00000446.jsp,程序有一些不足之处,所以那个论坛已经暂时关闭了。今后,可能还会考虑再次编写和修改这个程序。
这些程序原本在几年前就应该实现,现在刚实现可能有些晚了,但是那时候只能用ASP开发,并且没有现在自己设计的论坛数据库结构和论坛程序结构和思路。这个论坛数据库结构和论坛程序结构是在2008年才设计完成,并且开发完成的。我的PHP起步很晚,PHP学了6年多都没有学会(6年多当中只是偶尔关注一下PHP),直到2009年初需要使用国外空间,才学会了PHP。原来的网站语言,全部转化为PHP,PHP是最为理想的网站编程语言之一,最重要的原因是程序简洁,会减轻不少的工作量。
今年是我编程生活的第8年,我已经30岁了,编写程序的工作量是十分庞大的,很辛苦,当中有大量的工作细节和大量需要解决的问题,并且每次开发经常会遇到前所未有的新问题,语言是难以形容的。但是好处是一次开发完成,就不用再重复劳动了,只是需要不断地改进,经过多次的小修改、大修改,程序会越来越完美。
2010年04月05日 17:56
因为当时没有写工作日志,算法已经完全忘记了。直接看程序,无法看出当时打草稿时的数字规律,无法看懂。所以很多程序都直接使用大约2006年推算的算法,经过很多的测试,从未出错。http://www.ufoaq.com/archives/201003/的程序是每页300条记录,分为2纵列。打开2组数据库,然后依次显示每条数据。当显示完第150条数据时,输出一个<li>元素使其分成第2列。现在这个程序重新写,2组数据库提取时,让其合并为1组就方便多了。2组数据库,或者多组数据库合并为1组的好处是后续的操作简便,可以实现更多的功能。例如让其第1页显示100条记录,从第2页开始每页显示300条记录;15条记录×2列为1个区域,即30条记录/区域,每页10个区域,即每页300条,以分区域的方式显示。
我写的博客程序www.auiou.com和www.zj7.com的分页程序的算法相对比上述简单很多,如首页之后的第2页、第3页的分页程序,分类和按月存档的的分页程序,都是相同的算法,如这里http://www.auiou.com/relevant/00000445.jsp,这个算法任何语言都可以通用。但还可以再简化,例如PHP可以直接用$p=ceil($auf/$w3);一个语句就可以获得总共的页数。所以这个博客的分页程序可以简化为:
<?//$pa为页数
$w3=10;
$p=ceil($auf/$w3);
if (!$p) $p=1;
$w1=($pa-1)*$w3+1;
$w2=$pa*$w3;
if ($w2>$auf) $w2=$auf;?>
因为打开多组数据库的分页比较复杂,这2天总是出现很多的错误。每一次程序很乱的时候,就把相应的大片的程序删除,再重新写,反复写了3次。今天调试的时候,发现昨天写的程序中有四、五处错误,逐个排查之后,经过很多测试,程序运行正常。
这2天运算的一些过程:
23 4:
| 第N页 | 数据组 | 1组数据库的情形 | 2组数据库的情形 | 规律 |
| 1 | 3 | 1-4 | 1-3 1-1 | |
| 2 | 2 | 5-8 | 2-5 | 2=5-3 |
| 3 | 2 | 9-12 | 6-9 | 6=9-3 |
| 4 | 2 | 13-16 | 10-10 1-3 | 10=13-3 |
| 5 | 1 | 17-20 | 4-7 | 4=17-13 |
| 6 | 1 | 21-23 | 8-10 | 8=21-13 |
说明:上面的23 4,表示:23是总共有23条数据,4为每页显示4条记录;其中,每组数据库有10条记录,下述用变量$i3表示。下面的数据与上述的格式相同,因为篇幅的关系,不再打表格,因为我在用数字做演算测试的时候,也没有像上面一样打表格,而是直接用下面的方式来记录:
23 5
1 3 1-5 1-3 1-2
2 2 6-10 3-7 3=6-3
3 2 11-15 8-10 1-2 8=11-3
4 1 16-20 3-7 3=16-13
5 1 21-23 8-10 8=21-13
23 6
1 3 1-6 1-3 1-3
2 2 7-12 4-9 4=7-3
3 2 13-18 10-10 1-5 10=13-3
4 1 19-23 6-10 6=19-13
30 6
1 3 1-6 1-6
2 3 7-12 7-10 1-2
3 2 13-18 3-8 3=13-10
4 1 19-24 9-10 1-4 9=19-10
5 1 25-30 5-10 5=25-20
33 6
1 4 1-6 1-3 1-3
2 3 7-12 4-9 4=7-3
3 3 13-18 10-10 1-5 10=13-3
4 2 19-24 6-10 1-1 6=19-13
5 1 25-30 2-7 2=25-23
6 1 31-33 8-10 8=31-23
$e4的值表示提取最近一组数据的数据条数:
<?$pb=ceil($e1/$i3);
$p=$pb;
$e4=$e1-($pb-1)*$i3;?>
通过上述很多数据的反复对比,如23 4这些数据,其规律10=13-3,4=17-13,8=21-13,其中等号左边的值如10、4、8,是2组数据库时提取第1组数据库时的$w1,等号右边的被减数13、17、21,是2组数据库时的$w1,等号右边的减数3、13、13,是我需要重点推算出来的值,这个值很容易出错,假设这个值的变量是$e5。$e5的意义是,在当前的页面中,$e5表示之前显示过多少条数据。最终经过直接观察数字的规律而直接写公式,我并不明白这是为什么,但是根据数字的规律用这个推算出来的公式,就不会出错了。规律如下:
| 数据编号 | 需要减去的值$n1 |
| 3 | 0 |
| 2 | 10 |
| 1 | 20 |
同样的格式:
2 0
1 10
如果将$n1显示为未乘以$i3前的值,如下:
3 0
2 1
1 2
4 0
3 1
2 2
1 3
通过上述的规律,最终,$e5的值可以准确地获得了,如下:
<?$e5=$e4+($pb-1-$f1)*$i3?>
其中,$f1表示数据组的编号。用上述获得$p页数同样的方法来获得$f1,如下:
<$i=$e1+1;
$j1=$i-$w5;
$f1=ceil($j1/$i3);?>
变量$a5表示如上述提到的第1页特定显示的条目数如100条记录,$w5和$w6是最终要获得的2组数据库合并后的起始和结束值,$w5是起始值,$w6是结束值;相当于这页程序http://www.auiou.com/relevant/00000445.jsp的$w1和$w2。为了不造成混淆,必须使用2个不同的变量,因为当$a5存在时,$w5和$w1的值不同。$w5和$w6的获得方法:
<$w5=$w1;$w6=$w2;
if ($a5){if ($pa==1){$w6=$a5;$e6=$a5;}
if ($pa>1){$w5=$w5-($w3-$a5);$w6=$w3+$w5-1;}
$p=ceil(($e1-$a5)/$i3)+1;}
if ($w6>$e1) $w6=$e1;?>
通过对各个部分的反复思考和测试,最终大功告成了。很多程序,以及程序中的变量代表的含义,经常是没有唯一的意义,或者方法,或者思维方法,一会儿这样,一会儿那样;一会儿代表这个含义,一会儿代表那个含义。但最终还是能通过使用不同的方法,实现想要实现的功能、解决问题,殊途同归,有些类似于代数、几何的证明题用不同的方法证明同一个命题。
2010年03月30日 10:20
当整个网站下载完毕之后,需要检查是否有的文件没有下载,或者下载不完全。在本地建立一个日志文件如info.txt,用来记录服务器上整个网站的大小、文件个数、文件夹个数,整站下载完毕后查看本地目录的整个网站大小、文件个数、文件夹个数,对比info.txt,如果这3个值都分别相同,说明完整地下载了。
统计整个远程网站的大小需要遍历远程网站的所有子目录。遍历所有子目录,必须建立自定义函数function aa(),以及使用while循环,在while反复调用aa()函数。而PHP中,function **(){}大括号中的变量不能被大括号外调用,这是造成程序设计困难的很大障碍,但最终还是有对策,可是繁琐了很多。如果PHP的function的大括号中的变量能够被大括号外调用,就简单许多了。因为遍历文件夹当中,用while循环多次调用这个aa(),尝试用return来调用大括号中的变量,但还是失败了,因为每一次循环,return的值会被清空,并且不能累加。经过一晚上的思考,每个文件大小用echo语句输出为HTML代码,再被本地程序用file_get_contents()函数获得远程所有的每个文件的大小,然后在本地再累加,就可以解决PHP的这一不便了。思路如:
远程网站的http://www.zj7.com/aa.php:
<?function aa(){//$g的值为遍历的每个文件。
if (!is_dir($g) filesize($g)."\n";
}?>
本地程序:
<?$i=@file_get_contents("http://www.zj7.com/aa.php");
echo $i;
$i="";?>
然后对http://www.zj7.com/aa.php产生的数字,逐行进行累加,就可以统计整个远程网站的大小。
2010年03月29日 23:06
但昨晚发现了一个问题,如果第1步先将所有文件在远程复制到远程的目录,当文件个数很多,比如几千个文件,短时间内会比较消耗服务器资源。于是今天用了1天的时间,把整个程序改为先在服务器遍历文件夹,产生文件列表,并统计所有文件的大小总和,然后被本地调用。本地的程序一定要只用一种语言编写,而且尽可能将程序写在本地,而尽量不要写在远程,因为本地的Apache和PHP环境配置较好,避免远程服务器不支持某些函数或功能。本地程序相当于一个大的公共程序,或者相当于接口,或者相当于一个软件。
ASP程序今天做了测试,运行很顺利,可使用XML调用远程数据。有一个PHP空间被关闭了allow_url_fopen,无法使用file_get_contents()函数调用远程数据。于是程序明天要再次做大的修改,因为远程的PHP空间不能使用file_get_contents()函数,但本地的PHP环境可以使用file_get_contents()函数,所以将调用远程数据放在本地的程序中。同时为了保持“接口”相关程序的一致,远程的ASP程序与远程的PHP程序,要尽可能保持一致。我现在已经把它们保持了一致,看起来很舒服。
在调试的过程中,无意中发现PHP的file_exists()函数的一点不足,确实如此。我的PHP版本是5.2.8,如果file_exists()指定需要判断的值是一个文件夹,当这个文件夹存在时(同名的文件不存在),返回的值是1,如果不存在这一不足、正常的话,返回的值应该是0,或者"",或者False。也就是说,PHP的file_exists()函数会误把文件夹当成是文件。而is_dir()则不存在此问题,所以,当需要判断一个存在的路径是文件还是文件夹,应该使用is_dir()来判断,而不应该使用file_exists(),因为这时候file_exists()会有误判的情形。
2010年03月27日 09:49
经过考虑和测试,还是有解决办法的。在网站上写一些程序,遍历所有文件夹,使整站文件复制到一个文件夹或者多个文件夹,并且复制文件时将文件全部改扩展名,例如aa.php改名为aa.php&au;如http://www.zj7.com/proportion/3355.php,改名为proportion~3355.php&au,改扩展名是为了使PHP、ASP、HTML、JPG、GIF等文件可以直接被本地下载。然后让其产生2个列表,分别是文件列表和文件夹列表。在本地使用PHP编写程序,先获得上述2个列表到本地。然后使用PHP的copy()函数,批量远程下载这些文件,copy时批量改名为原来的名字如aa.php,并使其下载到相应到文件夹。
因为下载的文件很多,PHP运行超过30秒通常会报错,所以使用get+跳转的方法,让其一个一个下载。如aaa.php?n=1下载完后,跳转到aaa.php?n=2、aaa.php?n=3……这相当于将循环程序拆分。全部下载完毕后,删除服务器上的临时文件,将本地文件打成压缩包进行备份。
如果服务器空间不能支持在线解压缩,用与上述相反的方法,在本地生成文件列表,在服务器上写一段上传程序,然后使用get+跳转的方法,用程序抓取本地文件,让其一个一个上传,而不使用FTP。
2010年02月11日 10:41
我没有做过Windows+Apache与Linux+Apache的对比,比如速度、内存和CPU的占有率,但是Windows+Apache的速度已经很令我满意,并且能够很好地支持.htaccess,所以运行PHP的话,Windows+Apache要比Windows+IIS+PHP优越很多,也能够满足企业网站的需要。
因为Linux主机的安装比Windows主机繁琐,所以国内的Linux虚拟主机太少,估计不到1%。本文标题提到“IIS主机”,“Apache主机”,是因为本文并不强求Linux主机的普及,如果有Windows+Apache+PHP的专用虚拟主机,要远优越于现在的Windows+IIS+ASP+PHP+ASP.net的全能主机。
国外的Windows主机比Linux主机价格贵;国内则相反。很可能是因为国外的Windows主机需要交版权费,所以价格贵;国内因为Linux技术不普及,所以价格贵。
网站的编程语言个人觉得PHP比较好,是更理想的网站开发语言。PHP的优点:语言更简单,程序代码简洁,开发速度比ASP快,PHP可以轻松实现很多功能。ASP语言比较繁琐,PHP的简洁程度,约是ASP的2~5倍。
2010年01月16日 08:42
经过测试,最终还是有了无奈的替代办法,在图片的文件夹建立一个.htaccess文件,使用404错误或者Rewrite模块均可。将404错误或者Rewrite指向一个auf.php,这个auf.php中使用header("Expires:")来设定图片的过期时间,截取地址栏中图片的文件名如$a1,使用include()函数来包含图片文件,如include($a1)。由此可见,PHP的include()函数功能强大。
远程的图片也可以用file_get_contents()函数来调用,写入到auf.php中,也可以设置远程图片的过期时间,可见PHP的功能强大。
2010年01月10日 13:56
2010年01月09日 09:54
Apache提供的.htaccess文件功能,可以实现特殊的功能,如使每个文件夹调用Rewrite模块、mod_expires模块、每个文件夹指定404错误页,等等,这些都是PHP、JSP、Perl等任何编程语言无法直接实现的,因为.htaccess文件是实现服务器的配置功能。然而,如果需要做更复杂的判断,则需要.htaccess文件与编程相配合。如之前的例子,http://www.zj7.com/strive/28,使用.htaccess文件与PHP编程相结合,.htaccess文件指定404错误页,PHP程序通过判断来选择多个404错误页。
使用Apache作为服务器后台的程序,如PHP,都可以使用.htaccess文件。ASP+IIS或者PHP+IIS无法实现.htaccess文件的功能,因为IIS不支持.htaccess文件。
2010年01月09日 08:39
这样节省了一个独立IP,今后如果更换服务商,只要购买一个独立IP就可以了,而不用购买2个独立IP。我的方法是把要解析的二级域名、泛域名解析的IP都指向这个独立IP,网站控制面板不需要任何设置,在这个独立IP对应的空间的根目录建立一个index.php文件,用这个文件读出地址栏,然后用include()函数包含对应的二级域名或泛域名解析的首页文件。include()的优先顺序是先判断二级域名的首页文件是否存在,如果存在,则include二级域名的首页文件;如果不存在,则include泛域名的首页文件。
这个独立IP所解析的内页,只能用.htaccess的404错误页实现。在这个独立IP对应的空间的根目录建立一个.htaccess文件,把404错误页指向auf.php。与上述相同的步骤,错误页auf.php也是写入判断语句,用include()函数包含对应的二级域名或泛域名解析的内页文件,优先顺序和判断方法与上述相同。
使用这个独立IP建立多站点,如二级域名、泛域名同时解析,这些多个站点是整合在一起的,不能像独立的站点一样实现各种功能。如果需要实现独立站点的功能,可以用其它的方法,例如将功能提交给独立站点去执行,或者在这个独立IP上再建立一个二级域名或泛域名,使其能够执行相应的功能。
另外,IX的共享IP不能建立泛域名解析的原因如这里:http://www.zj7.com/strive/7。
2010年01月08日 14:13
查询参数是可以大量减少的,例如博客、论坛的文档,在网站里区分2篇文章的方法就是如前面提到的article.asp?id=52,或article.php?id=495,使用?id=来区分。其它的参数,都可以写在数据库中或者Cookies中。因为Apache提供了.htaccess,使网址可以使用Rewrite模块或者404错误,轻松地实现网址静态化。QUERY_STRING参数可以写在数据库或者Cookies中,必要的多个参数写在地址栏以/或-等连接符。
对于固定的文档链接,可以尽量减少QUERY_STRING参数。对于用户提交的搜索、查询等产生的动态网址,QUERY_STRING参数可以写在地址栏。
2010年01月04日 14:04
在设置网页过期时间方面,PHP主程序中如果有多个被包含的文件,只要在一个文件中设定过期时间即可;而JavaScript的包含,则所有的被包含的文件,都需要设定过期时间,当然,这些被包含的.js文件中,常更新的文件可以不用设定过期时间或者设定为时间较短,较常更新的文件的过期时间可以设定为时间较短。因为,PHP与JavaScript的包含文件的这个区别,JavaScript程序可以写在一个.js文件中,扩展名改为.php,将这个.php的JS文件的过期时间设置得长一些,可加快网站的速度,节省流量。
PHP的include()函数,如果include文件里面还有include()函数,无论被包含了多少层,其变量都是处于相同的“层级”,可以直接调用。JavaScript也是这样,刚在IE和Firefox下做了测试,均可正常调用。前些天一段JavaScript程序因为这个问题出错,现已修正。
2010年01月04日 09:04
在测试中,无意中发现Firefox不存在此问题,设置了过期时间的网页,即使还没有到过期时间,Cookies仍然会提取最新的数据,我使用Firefox 2.0做测试。IE 6.0存在此问题,如果使用Header("Location:");跳转到含有Cookies的页面时,在IE 6.0下,Cookies会提取最新的数据,但这时如果关闭浏览器,再次访问这个页面时(不要按刷新),Cookies仍然是旧的数据。
因此,含有Cookies的页面不宜设置网页过期时间。
2010年01月03日 08:50
我的ixwebhosting的Linux空间,GoDaddy的域名赠送的免费Linux空间,以及国内的一个Linux空间,均不支持mod_expires模块。现在较新的Apache版本是2.2.*,如2.2.14,这个新的版本是包含mod_expires.so模块的,但默认没有开启此模块,默认的httpd.conf文件中加载mod_expires模块的语句前面有#号。而GoDaddy的Linux主机,仍然使用Apache 1.3版本。
昨天给GoDaddy发邮件,希望开通mod_expires模块,刚收到GoDaddy的回复,他们表示还不想开通此模块,可能是因为这位工作人员并不知道mod_expires模块的重要作用。看来,如果需要使用mod_expires模块,只能选择其它的主机,或者VPS。
我下载了Apache 2.2.14版本,在本机做了测试,mod_expires可以正常使用。
2009年12月21日 08:22
JavaScript与PHP相同的是语法很相似,循环程序、if语句、大部分运算符等等是完全相同的,这些是实际应用中最常用的语句。可以先学习PHP,再学习JavaScript,有助于对JavaScript的学习。调试方面,PHP相对更易调试,因为JavaScript需要在IE和Firefox两个浏览器之间做调试,有很多JavaScript语句和样式表只支持IE而不支持Firefox,而导致JavaScript项目失败。例如昨天遇到的document.body.innerText获取整页的网页内容,在IE下可正常运行,Firefox则无法显示,于是使用document.body.innerHTML代替。
因为PHP可以直接完成一个小型或大型网站的项目,而JavaScript不能独立完成项目,JavaScript是另一种特殊的应用。所以在项目的开发当中,对PHP本身是一种最好的学习。当然,在PHP中获得的经验和思路,也是可以运用于JavaScript的。
有时候,为了减少服务器的负荷,可以把程序交给JavaScript,分给每一台用户的电脑去处理程序,例如中文简体和繁体转化的程序。网上有2个中文简繁体转化的程序,这2套程序是不同的程序员编写的,但感觉还不是很好用,于是前两天重新编写一次,整个JavaScript程序400多字节,Cookies让PHP来处理,因为PHP处理Cookies,要比JavaScript处理Cookies方便许多,这个程序应用在www.ufoaq.com,经过150K的文本测试,效率还满意,目前仅input无法简繁体转化。
PHP功能强大的方面,在于可以轻松实现上传文件,几句程序即可实现;内置mail()函数,几句程序即可以发送邮件;可以调用远程文件和远程数据库;可以轻松实现Gzip压缩;可以直接获得图片的宽和高等等。
2009年12月19日 10:32
<VirtualHost *:80>
ServerAlias *.zj7.com
DocumentRoot F:/site/zj7
</VirtualHost>
上述代码是Linux空间建立泛域名解析的原理。而ixwebhosting的空间在建立一个新的域名时,只能建立www.zj7.com,前面的www.已经是默认值,无法更改。如果没有www.这个默认值,理论上输入*.zj7.com就可以建立泛域名解析,然而ixwebhosting做了限制。然后建立www.zj7.com的空间,进入ixwebhosting控制面板的网页选项,让www.zj7.com可以用其它的别名访问,这时会看到(输入框).zj7.com,在输入框如果能够输入*号,理论上这样完全可以建立泛域名解析,但ixwebhosting这里也做了限制,不能输入*号,所以ixwebhosting不能建立泛域名解析。
但ixwebhosting赠送多个独立IP,还是可以实现泛域名解析的功能。可以在域名的控制面板建立一个*.zj7.com的二级域名,解析到此独立IP。ixwebhosting建立一个空的或者存在的域名的空间,对应此独立IP,就实现了泛域名解析。详细步骤请见http://www.auiou.com/relevant/00000519.jsp(再谈泛域名解析)。
Linux空间建立一个域名对应的空间,与上述的建立泛域名解析的原理与步骤,几乎是完全相同的,详细如http://www.auiou.com/relevant/00000572.jsp(使用Apache作为本地虚拟主机)。根据这个原理,只有修改这个独立IP对应的Apache的conf/httpd.conf文件,才可以建立多个虚拟主机。
当然,因为独立IP不需要任何配置,就可以解析指向此IP的任何域名,数量没有限制。我使用了一个独立IP,已经解析了很多不同的域名,例如http://auc.zj7.com是首页使用include()函数的方法,包含对应文件。http://auc.zj7.com/links/这个路径的文件并不存在,是在根目录建立一个.htaccess文件,设定404错误,使其包含一个如/au/links.php的文件。同样的原理,http://auc.zj7.com/sitemap/,也可以使其包含一个如/au/sitemap.php的文件。
很可喜的是,ixwebhosting空间支持Gzip压缩,支持.htaccess。但是ixwebhosting的空间使用.htaccess的404错误页时,其下一层的目录中,静态化后的网址不能含有.php的扩展名,否则找不到服务器,必须隔着一层目录才可以含有.php的扩展名,例如本文的地址http://www.zj7.com/strive/7,ixwebhosting的空间不能静态化为http://www.zj7.com/strive/7.php,只能静态化为http://www.zj7.com/strive/7,或http://www.zj7.com/strive/7/,或http://www.zj7.com/strive/7.html,或http://www.zj7.com/strive/a/7.php等等。ixwebhosting的空间必须使用Rewrite才可以静态化为http://www.zj7.com/strive/7.php。其它网站的Linux空间如GoDaddy的空间不存在此问题。
2009年12月18日 09:51
如果你在本地既需要建立一个ww2.zj7.com单独的虚拟主机,又需要建立*.zj7.com的泛域名解析,并且ww2.zj7.com与*.zj7.com是不同目录的话,其先后顺序是先建立ww2.zj7.com,再建立*.zj7.com,两者不能颠倒。Apache的安装目录下的conf/httpd.conf写入的代码如下:
<VirtualHost *:80>
ServerAlias ww2.zj7.com
DocumentRoot F:/site/zj7
</VirtualHost>
<VirtualHost *:80>
ServerAlias *.zj7.com
DocumentRoot F:/site/zj7222
</VirtualHost>
Apache在本地设置泛域名,建立虚拟主机是比较容易实现的,上述代码需要写在最外层,也就是这段代码不能写在其它的标签当中。需要修改DocumentRoot的值,是你的本地网站所在路径。
版权声明:
本博客所有文章,均符合原创和创作共用的定义,禁止转载,违者将必究。如需引用本博客的文章全文,正确的方法是贴原文的标题和网址即可。
文章分类 Category:
编程 | PHP | 互联网 | 真相与UFO | JavaScript
BBS社区研究 | QQ研究 | Blog的发展 | 生活
食虫植物
Gratitude
Blog存档 Archives:
2010年12月 | 2010年11月 | 2010年10月
2010年09月 | 2010年08月 | 2010年07月
2010年06月 | 2010年05月 | 2010年04月
2010年03月 | 2010年02月 | 2010年01月
2009年12月
近期的主题:
本博客正在做调整
Orshu论坛程序最新进度(14)
随谈:2010-12-22 外星人所处的高度
帐号的命名
关于网页时区的设置
2010-12-12整理 我昨天在QQ群的发言内容
闲谈:2010-12-10 音乐
好好珍惜婚姻,好好珍惜家庭
最近新开通的论坛简介
如何在Orshu论坛的个人资料里显示年龄?
今天Go Daddy的速度已经恢复
Orshu论坛程序最新进度(13)
随记:2010-11-29 Orshu论坛程序最新进度(12)
随记:2010-11-26 Orshu论坛程序最新进度(11)
随记:2010-11-25 Orshu论坛程序最新进度(10)
随记:2010-11-25 Orshu论坛程序最新进度(9)
随记:2010-11-24 Orshu论坛程序最新进度(8)
随记:2010-11-22 Orshu论坛程序最新进度(7)
随记:2010-11-21 Orshu论坛程序最新进度(6)
随记:2010-11-20 Orshu论坛程序最新进度(5)