如何在PHP / Kohana中捕获Apache的403错误?

时间:2011-02-04 08:44:36

标签: php apache kohana

我的网站在Kohana v3上运行,我在bootstrap.php中设置了如下所示的自定义错误页面

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。

有什么想法解决它?

1 个答案:

答案 0 :(得分:3)

您可以在代码中执行此操作,而不是使用.htaccess来锁定该区域。 PHP's header function可用于发送403状态。

另一种方法是在Apache中为403错误设置自定义错误文档,并将其指向脚本以处理错误。请参阅ErrorDocument文档,了解如何执行此操作,但这将是以下几点:

ErrorDocument 403 /custom_403_handler.php