2011-02-04 66 views
1

我的網站上的Kohana V3運行,並且我在bootstrap.php中設置自定義錯誤頁類似下面如何在PHP/Kohana中捕獲Apache的403錯誤?

try 
{ 
    // Attempt to execute the response 
    $request->execute(); 
} 
catch (Exception $e) 
{ 
     .... error page re-direct. 
} 

它的工作原理罰款404錯誤。

我也有一些文件夾無法直接訪問,但必須位於www根目錄下。我把htaccess來保護這些文件夾

# nobody can access this folder from Browser 
Deny from all 

當在瀏覽器訪問該文件夾下的文件的URL的用戶類型,一個Apache 403錯誤,會以純文本的方式顯示像下面這樣:

故宮

您無權訪問此服務器上的/ private_folder。

我想定製這個錯誤並在Kohana中處理它。但是,我發現Apache完全控制了403錯誤,在這種情況下甚至沒有調用index.php。

任何想法解決它?

回答

3

而不是使用.htaccess鎖定該區域,您可以在代碼中執行此操作。 PHP's header function可用於發送403狀態。

另一種方法是在Apache中爲403錯誤設置自定義錯誤文檔,並將其指向腳本以處理錯誤。請參閱有關如何做到這一點的ErrorDocument文檔,但它會沿着這些路線的東西:

ErrorDocument 403 /custom_403_handler.php 
+1

ErrorDocument的偉大工程。我將403錯誤重定向到我的錯誤控制器:`ErrorDocument 403/error/404` – LazNiko 2011-02-04 09:29:10