是否有可能通過http在Zend/public /目錄中請求目錄而不將它當作控制器來處理?Zend Framework - 不要將/ public /目錄當作控制器使用
例如,我有一個包含Facebook應用程序數據的目錄/ public/facebook /,但當請求http://mysite.com/facebook時,Zend是(缺省預期行爲)給出「facebook控制器缺失」錯誤。
是否有可能通過http在Zend/public /目錄中請求目錄而不將它當作控制器來處理?Zend Framework - 不要將/ public /目錄當作控制器使用
例如,我有一個包含Facebook應用程序數據的目錄/ public/facebook /,但當請求http://mysite.com/facebook時,Zend是(缺省預期行爲)給出「facebook控制器缺失」錯誤。
這是因爲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]
如果您有這URL內容,ZF不要試圖找到Facebook的控制器,你需要添加一個文件夾命名爲Facebook和文件index.php文件到該文件夾
這項工作對我來說:
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
哇,這是一些規則!是否有錯誤...我只是直接粘貼到我的訪問文件,並得到500錯誤?我不太確定這個規則是什麼,但最終我希望能夠在沒有Zend的控制器問題的情況下請求http://mysite.com/facebook/app/index.php。 – Owen
所以首先嚐試一個簡單的'RewriteRule!(public/facebook/app/index \ .php)|(facebook/app/index \ .php)$ /index.php [L]'這裏我使用了parth的2個版本,不確定是否是正確的,這意味着如果路徑不是列出的內容之一(用或符號|)然後將其重定向到index.php – regilero
我不知道爲什麼,但也給了500錯誤。我發現了一個可以工作的解決方案,它將以下內容添加到標準Zend htaccess文件的倒數第二行:RewriteCond%{REQUEST_URI}!^/facebook – Owen