0

Zend_Controller_Router_Route_Abstract在 Zend Framework 中进行扩展以向我的应用程序添加自定义路由。如果它确定请求路径不是它必须处理的路径之一,我的match方法会返回。false因此,对于路径,如静态资源路径,我的自定义路由类返回false和默认模块路由器负责。

我的问题是,只要我的站点的文档根目录指向我的公共目录,一切正常。当我将文档根目录更改为 wwitch 公用文件夹中的目录时(父目录),尝试请求像http://mysite.com/css/global.css这样的静态资源时出现以下错误:

发生错误 Page not found 异常信息:

消息:指定的控制器无效(css)堆栈跟踪:堆栈跟踪:....

请求参数:

  array (   'controller' => 'css',   'action' => 'global.css',   'module' => 'default', )

这只是信息的一部分,另一部分无关紧要。

我的问题是,我该如何解决这个问题?如何在公共目录的父目录中拥有文档根目录的同时拥有我的自定义路由逻辑和提供静态内容?

这是我在文档根目录未指向公共目录时使用的 .htaccess :

重写引擎开启

重写规则 ^.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]

4

1 回答 1

1

您不应该从 PHP 提供静态文件。这意味着您应该使用:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L]
于 2012-05-21T12:08:01.720 回答