2011-09-28 65 views

回答

0

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

要做的最好的事情,恕我直言,是增加一个例外到这个规则。然后有不止一种方法来做到这一点。您可以使用RewriteCond(例如,避免现有目录或/ public中的文件的常规重定向)。但是你也可以在RewriteRule表达式中对它进行过滤。这是在RewritreRule例外的例子,所以withoutt的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] 
+0

哇,这是一些规则!是否有错误...我只是直接粘贴到我的访问文件,并得到500错误?我不太确定这个规则是什么,但最终我希望能够在没有Zend的控制器问题的情况下请求http://mysite.com/facebook/app/index.php。 – Owen

+0

所以首先尝试一个简单的'RewriteRule!(public/facebook/app/index \ .php)|(facebook/app/index \ .php)$ /index.php [L]'这里我使用了parth的2个版本,不确定是否是正确的,这意味着如果路径不是列出的内容之一(用或符号|)然后将其重定向到index.php – regilero

+0

我不知道为什么,但也给了500错误。我发现了一个可以工作的解决方案,它将以下内容添加到标准Zend htaccess文件的倒数第二行:RewriteCond%{REQUEST_URI}!^/facebook – Owen

0

如果您有这URL内容,ZF不要试图找到Facebook的控制器,你需要添加一个文件夹命名为Facebook和文件index.php文件到该文件夹​​

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

相关问题