2009-11-23 54 views
1

背景,我正在運行一個Zend Framework應用程序。試圖儘可能地擠出最多的表現。因此,我試圖將規則從.htaccess中移出到Zend Framework書籍的作者的每篇博文中:http://www.armando.ws/2009/03/how-to-run-zend-framework-with-no-htaccess-file/爲什麼我的LAST規則[L]不能在apache中工作?

所以基本上,在httpd.conf中,我添加了一個include conf/extra/httpd-zf.conf,其中包含與我的.htaccess文件中完全相同的內容。

下面是相關的代碼不正確的的httpd-zf.conf功能:

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

控制器正常工作。可以看到index.php。但靜態文件不起作用。它錯誤地指出它不是一個有效的控制器,所以很明顯它是通過index.php運行的。

這是幾乎一樣,如果運行後:

RewriteRule ^.*$ - [L,NC] 

它保持正常持續。而事實上,刪除此行:

RewriteRule ^.*$ /index.php [NC,L] 

修復靜態文件,但當然打破了其餘的。

所以基本上最後的規則不工作看起來。

上得到這個正常工作任何想法?

謝謝。

UPDATE

開啓日誌記錄(我不得不加息它爲LogLevel 9)後,事實證明,即使除去 重寫規則^ * $的index.php [NC,L] 允許靜態文件解決,這是不匹配的條件RewriteCond%{REQUEST_FILENAME} - 無論什麼...它只是做了「通過」,無論如何,允許文件顯示...

如此清楚,事實的.htaccess是正確的道路上進行它的工作,其中的httpd-zf.conf有錯誤的路徑....必須有一個點的地方,我可以告訴大家的httpd-zf.con ˚F我的文檔根目錄的路徑是什麼?

回答

0

找到了解決辦法!

下面是工作代碼:

RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} -s [OR] 
RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} -l [OR] 
RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} -d 

本維基文章解釋爲什麼它不工作:在調試 http://wiki.apache.org/httpd/RewriteContext

2

我不相信的條件與第二規則相關聯。我建議打開改寫調試:RewriteLog "/myfolder/mylogfile.log"RewriteLogLevel 3

嘗試:

RewriteCond %{REQUEST_FILENAME} !-s 
RewriteCond %{REQUEST_FILENAME} !-l 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^.*$ /index.php [NC,L] 
+1

好主意。但不確定這些條件是否真的應該與第二條規則相關聯。 Zend Framework希望所有的靜態文件都能正常運行,如果沒有靜態文件,可以通過index.php將其映射到一個控制器。 – joedevon 2009-11-23 17:47:21

+0

剛剛編輯了原始答案,現在可能會更接近地匹配問題。我已經轉向消極條件,這應該消除兩條規則的需要。乾杯。 – segy 2009-11-23 19:04:08

+0

謝謝...雖然沒有工作。看到我更新的問題...順便說一句,你知道我怎麼可以添加一個路徑到httpd-zf.conf?看來路徑是問題... – joedevon 2009-11-23 19:12:52

相關問題