我想限制对某些文件夹(例如,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>