我在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在子目录上工作吗?
答案 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 。