Zend Framework 1 .htaccess in subdirectory



我在Linux ApacheWeb服务器上使用了Zend框架1,并且必须将其放在名为"go"的子文件夹中,我将带有以下行的.htaccess放在其中(在go文件夹中):

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

进入 domain.com/go 后我得到的是:

未找到

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

此外,在尝试 使用错误文档来处理请求。

我做错了什么?

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

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

你需要使用RewriteBase才能正常工作

RewriteBase /go

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

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

以下解决方案对我有用:

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

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

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

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

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

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

最后一步将使您能够仅使用$this->baseUrl()助手轻松地将资源(css,js,图像)添加到HTML中。您不必为每个文件路径添加 /go

最新更新