自定义 403 错误页面不显示

自定义 403 错误页面不显示

我想限制对某些文件夹(例如,includes、xml 和 logs)的访问,因此我为它们赋予了 700 个权限,为它们内的所有文件赋予了 600 个权限。首先,这是限制访问的正确方法吗?

我的根目录中有一个 .htaccess 文件,用于处理重写和错误文档。根目录中有两个页面 - 403.php 和 404.php - 用于处理 403 和 404 错误。我已将这些规则添加到我的 .htaccess 文件中:

ErrorDocument 404 /404.php
ErrorDocument 403 /403.php

现在,404 页面工作正常。当我尝试访问“includes”文件夹时,不会显示 403 页面 - 相反,我得到的是标准的 apache 403 错误页面,提示“此外,尝试使用 ErrorDocument 处理请求时遇到 404 Not Found 错误。”

但是,当我尝试在浏览器中访问 .htaccess 文件(位于 Web 根目录中)时,我得到了自定义的 403 错误页面。为什么会发生这种情况?

答案1

includes/ 文件夹中是否有 .htaccess 文件?它是否有ErrorDocument 403指令?

如果该一个覆盖了父级,那么可能会导致您所描述的问题。

尝试将该ErrorDocument指令放入您的 httpd.conf 或 vhost 文件中。

您在访问和错误日​​志中看到了这些请求的什么?

还值得再三检查 403 行是否确实说的是ErrorDocument 403 /403.php而不是ErrorDocument 403 403.php。 这个小拼写错误会导致您描述的所有症状。

聊天后更新:

最终的解决方案是使 Apache 用户可读取包含目录,并将其添加到 .htaccess:

  <Location /includes>
    Order Deny,Allow
    Deny from all
  </Location>

相关内容