Zend AutoLoader在共享主机下无法正常运行

时间:2011-10-02 12:33:36

标签: zend-framework deployment shared-hosting

我最近在共享主机上推出了一个zend框架项目。经过多次努力,我得到了第一个索引页面,但是传递了所有可自动加载的类,如模型,表单,映射器都找不到。

以下是我在根文件夹的公共目录外使用的.htaccess版本。

RewriteEngine On

RewriteRule ^\.htaccess$ - [F]

RewriteCond %{REQUEST_URI} =""
RewriteRule ^.*$ /public/index.php [NC,L]

RewriteCond %{REQUEST_URI} !^/public/.*$
RewriteRule ^(.*)$ /public/$1

RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^.*$ - [NC,L]

RewriteRule ^public/.*$ /public/index.php [NC,L]

有点令人惊讶的事实是,相同的地图制作者和表单在首页或baseURL中被识别,但超过它,没有任何效果。

我做错了什么或错过了什么?

3 个答案:

答案 0 :(得分:1)

我认为如果您从Zend Framework“public”文件夹中复制index.php.htaccess并将其放在public_html或同等目录中。如果您的Zend Framework应用程序目录与public_html位于同一目录中,则默认的.htaccess文件和index.php文件应该可以正常工作。

/home/yoursite
--application/
---- controllers
---- forms/
---- models/
---- views/
-- library/
-- public_html/ (public)
---- .htaccess
---- index.php

答案 1 :(得分:0)

改为使用

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L]

基本思路是,如果服务器上的请求URL存在文件,则将其发送到客户端浏览器,否则将请求转发给ZF应用程序来处理它。

要在根域下访问公共目录,请编辑Apache httpd.conf文件。将您的虚拟主机直接映射到公共目录。

答案 2 :(得分:0)

您可以尝试我寻找和应用的解决方案吗?它对我有用。 http://blog.motane.lu/2009/11/24/zend-framework-and-web-hosting-services/

您填写/public_html/.htaccess的所有内容(不是/public_html/public/.htaccess)

RewriteEngine On
RewriteRule ^(.*)$ public/$1 [L]