是否可以在Zend / public /目录中通过http请求目录而不将其视为控制器?
例如,我有一个目录,/ public / facebook /包含facebook应用程序数据,但Zend是(作为默认的预期行为),当我请求http://mysite.com/facebook时出现“facebook controller missing”错误。
答案 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