Saturday, January 24, 2009

解决在虚拟主机中使用Zend Framework时,根目录不能指定的问题

标题好长,因为问题不太好描述,但又是在虚拟主机中使用ZF常见的问题。
通常使用ZF时,根目录都指定到只有一个index.php的目录html,(也可以叫别的名字,参考:http://framework.zend.com/manual/en /zend.controller.html#zend.controller.quickstart.go),其它目录如applications和 library都与这个目录同级,但在虚拟主机环境下,根目录是固定的,你不能把ZF的application和library放到根目录的上级目录里去。如果把application和library放到html目录,即窝囊又可能造成路径问题。
其实这个问题又重写规则解决比较简单,.htaccess文件内容参考如下修改:

—————————代表月亮消灭你分割线————————————

RewriteEngine on

RewriteRule ^(images/.+) /html/$1 [L] #修正图片请求,根据自己的目录来。
RewriteRule ^(css/.+) /html/$1 [L]
RewriteRule ^(jscript/.+) /html/$1 [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule .* /html/index.php #其它找不到存在文件的请求全部转到html目录下的入口index.php

—————————-代表月亮消灭你分割线———————————–

这样问题就解决了,但又有一个新问题就是application和library目录下的文件可能会被用户访问到(直接url干进去),所以这个.htaccess文件可以再修改一下,针对deny的目录设置一下即可。

No comments:

Post a Comment