拒绝通过.htaccess

时间:2017-05-05 08:41:36

标签: php apache .htaccess

这是一个常见的问题,但我有点愚蠢,所以其他方法对我来说并不适用。我想拒绝访问以下子目录(注意:主站点位于此http://localhost/en/,每个子目录都在/en/文件所在的.htaccess处:reg_auth_rec_del/ajax/(及其所有文件),media/parts/media/scripts/media/translations/。但问题是所有这些文件都在所有页面上使用(例如media/parts/footer.php用于所有页面,并且可以在index.php等页面上查看。所以我想阻止用户查看所有页面直接这些文件。

我的意思是所以我不希望它们直接可见。

现在,我只是以这种方式使用,但我认为这不是处理事情的好方法:

$admins = array("192.168.0.100", "192.168.0.101", "192.168.0.102");
$ip = $_SERVER['REMOTE_ADDR'];

if(in_array($ip ,$admins, true)){
    $_SESSION['PERMISSIONS'] = "ADMIN";
} else {
    $_SESSION['PERMISSIONS'] = "USER";
}

//So if $_SESSION['PERMISSIONS'] == "USER", I can decide if I'd ike to open access to some files, and
//if the file can be viewable by user

1 个答案:

答案 0 :(得分:1)

最好的方法是@JasonJoslin在评论中建议,将PHP文件移到文档根目录之外。您仍然可以将它们包含在其他PHP文件中。

对于Javascript文件,样式表和图像,没有办法拒绝访问,因为这些文件包含在HTML响应中,并且客户端必须能够以某种方式加载它们。

如果您想将文件保留在文档根目录中并且仍然禁止访问,您可以使用旧样式OrderAllow / Deny,也可以将新指令应用为在Access control中描述。将.htaccess文件放在子目录reg_auth_rec_del/ajax

Require all denied

这应该拒绝访问目录及其所有子目录。