Zend Framework 1 .htaccess在子目录中

时间:2012-12-07 20:58:22

标签: zend-framework

我在Linux Apache Web服务器上使用了Zend框架1,并且必须将它放在名为“go”的子文件夹中,并将.htaccess与这些行放在其中(在go文件夹中):

# Rewrite rules for Zend Framework 
RewriteEngine on 
RewriteRule ^(.*)$ /public/$1 [QSA,L]

我输入domain.com/go后的内容是:

  

未找到

     

在此服务器上找不到请求的URL /index.php。

     

此外,尝试时遇到404 Not Found错误   使用ErrorDocument来处理请求。

我做错了什么?

将“/ public”更改为“public”后,我也会收到“未找到”错误。

我使用子域名:go.domain.com为我的应用程序,但我想知道为什么我的第一个方法不起作用?不.htaccess在子目录上工作吗?

2 个答案:

答案 0 :(得分:0)

您需要使用RewriteBase才能使其正常工作

RewriteBase /go

仍然将.htaccess放在公共文件夹中,而不是其他任何地方。

http://httpd.apache.org/docs/current/mod/mod_rewrite.html#rewritebase

答案 1 :(得分:0)

以下解决方案对我有用:

首先,在 / go 目录中放置 .htaccess 文件,其中包含以下内容

RewriteEngine on 
RewriteRule ^(.*)$ public/$1 [NC,L]

这会将对 / go 网址的每个请求重定向到公共目录。

接下来,除非需要,否则请确保 /go/public/.htaccess 文件中没有RewriteBase

最后,创建一个控制器插件,并将以下代码放在routeStartup()

Zend_Controller_Front::getInstance()
                       ->getRequest()
                       ->setBaseUrl('/database/');

最后一步将使您只需使用$this->baseUrl()帮助程序就可以轻松地向HTML添加资源(css,js,images)。您不必为每个文件路径添加 / go