2009-09-21 162 views
0

如果說你在利用流行:在PHP MVC框架中處理3xx/4xx請求?

RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} !-f 
RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ /index.php?$1 [L,QSA] 

而你試圖讓你的MVC Web框架處理404的,如果你沒有找到一個指定的URI相應的視圖,你會只是手動發送404應用程序本身的http頭文件,對吧?這是如何在Zend/Kohana和其他框架中完成的?

另一個問題,比方說,你重寫了整個網站,你想設置301s。你會在你配置路由的地方(Django的urls.py中使用正則表達式)還是虛擬主機指令?

基本上,如果我的web框架正在處理路由,我是否必須修改VirtualHost中的RewriteRules?

回答

1

在404上,一般來說,是的。

就永久重定向而言,我認爲這取決於上下文。如果我的路由解決方案支持以任何理智的方式進行,除非我預計遇到大的縮放問題,否則我可能會去做。

這意味着,如果我正在處理大量流量,並且有大量靜態內容供服務使用(但並不那麼龐大,以至於我只使用apache作爲web服務器),我最終可能會在fcgi下運行php以保留Apache處理瘦(並使用比prefork更好的MPM)。在那種情況下,我可能會導致URL短路並讓Web服務器執行重定向。

但即使在這種情況下,沒有理由不先在您的路由框架中完成它。

這樣,如果請求滑過,事情仍然有效,即使它們放慢速度。