这是一个常见的问题,但我有点愚蠢,所以其他方法对我来说并不适用。我想拒绝访问以下子目录(注意:主站点位于此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
答案 0 :(得分:1)
最好的方法是@JasonJoslin在评论中建议,将PHP文件移到文档根目录之外。您仍然可以将它们包含在其他PHP文件中。
对于Javascript文件,样式表和图像,没有办法拒绝访问,因为这些文件包含在HTML响应中,并且客户端必须能够以某种方式加载它们。
如果您想将文件保留在文档根目录中并且仍然禁止访问,您可以使用旧样式Order
和Allow
/ Deny
,也可以将新指令应用为在Access control中描述。将.htaccess文件放在子目录reg_auth_rec_del/ajax
等
Require all denied
这应该拒绝访问目录及其所有子目录。