2011-10-02 74 views
0

我最近在共享主机上启动了一个zend框架项目。经过很多努力,我得到了第一个索引页面,但是它传递了所有可自动加载的类,例如模型,表单,映射器都没有找到。Zend AutoLoader在共享主机下运行不正常

这是我在根文件夹的公共目录之外使用的.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] 

有点令人惊讶的事实是,同样映射器和表格的头版被识别,或基本URL,但它超越,没有什么工作。

我在做什么错或失踪?

+0

你的.htaccess看起来奇怪,但我不认为这是原因。 Zend框架的PHP inlude路径? – markus

+0

你能显示你的包含路径吗?你能向我们展示自动加载器失败时抛出的异常吗? – jah

+0

你能显示你的代码吗?它应该工作,自动装载机通常与重写规则无关。但是如果没有某种错误信息很难说清楚。 – Till

回答

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文件。直接将您的虚拟主机映射到公共目录。

+0

我想,您并不知道我要求在共享主机环境中进行部署的事实。这是与zend frameword一起提供的默认.htaccess。 – mrN

1

我想如果你从Zend Framework的“公共”文件夹中复制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 
+0

仍然,类没有找到和文件路径不起作用。 – mrN

+0

你可以发布你的index.php文件是什么样的,你也需要使用股票.htaccess文件。 – drew010