0

我在 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。

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

我做错了什么?

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

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

4

2 回答 2

0

以下解决方案对我有用:

首先,在/go目录中放置一个.htaccess文件,内容如下

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

这会将向/go url发出的每个请求重定向到公共目录。

接下来,确保您的/go/public/.htaccess文件中没有任何内容RewriteBase,除非需要。

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

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

最后一步将使您可以轻松地通过仅使用$this->baseUrl()helper 将资源(css、js、图像)添加到 HTML。您不必在每个文件路径中添加/go 。

于 2014-01-03T13:33:01.117 回答
0

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

RewriteBase /go

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

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

于 2012-12-07T23:43:22.300 回答