【问题标题】:How to catch Apache's 403 error in PHP / Kohana?如何在 PHP / Kohana 中捕获 Apache 的 403 错误?
【发布时间】:2011-06-21 05:31:08
【问题描述】:

我的网站在 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。

有办法解决吗?

【问题讨论】:

    标签: php apache kohana


    【解决方案1】:

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

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

    ErrorDocument 403 /custom_403_handler.php
    

    【讨论】:

    • ErrorDocument 很好用。我通过以下方式将 403 错误重定向到我的错误控制器:ErrorDocument 403 /error/404
    猜你喜欢
    • 2011-11-18
    • 1970-01-01
    • 2011-04-28
    • 2015-05-22
    • 1970-01-01
    • 1970-01-01
    • 2013-06-25
    相关资源
    最近更新 更多