Zend Framework - 不要将/ public /目录作为控制器

时间:2011-09-28 12:40:06

标签: zend-framework

是否可以在Zend / public /目录中通过http请求目录而不将其视为控制器?

例如,我有一个目录,/ public / facebook /包含facebook应用程序数据,但Zend是(作为默认的预期行为),当我请求http://mysite.com/facebook时出现“facebook controller missing”错误。

3 个答案:

答案 0 :(得分:0)

这是因为Zend提供的默认RewriteRules会将所有请求重定向到Zend Framework Bootstrapper(index.php)。

最好的办法,恕我直言,是为这条规则添加一个例外。然后有不止一种方法可以做到这一点。您可以使用RewriteCond(例如,避免对/ public中的现有目录或文件进行常规重定向)。但你也可以在RewriteRule表达式中过滤它。这是一个在RewritreRule中有例外的例子,所以没有RewriteCond:

RewriteRule !(public/facebook/(.*\.php))|(public/(.*\.pdf))|(externalauthent\.php)|(favicon.ico)|(images/(.*\.(ico|gif|jpg|png|bmp|JPG|JPEG|BMP|GIF|PNG)))|(css/(.*\.css))|(js/(.*\.*))$ /index.php [L]

答案 1 :(得分:0)

如果你有这个网址的内容,ZF不会尝试找到facebook控制器,你需要在这个文件夹中添加一个名为facebook的文件夹和一个文件index.php

答案 2 :(得分:0)

这项工作对我来说:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteCond %{REQUEST_URI}  !^/public_directory_name
RewriteRule ^.*$ index.php [NC,L]

只需将'public_directory_name'替换为您不希望Zend将其视为控制器的目录名称。

在一个措辞不同的问题中回答:htaccess - do not rewrite in this case