繁体   English   中英

拒绝通过.htaccess访问某些子目录

[英]Deny access to some subdirectories via .htaccess

这是一个常见的问题,但是我有点愚蠢,因此其他人的方法对我而言不可行。 我想拒绝访问以下子目录(请注意:主站点位于这样的http://localhost/en/而每个子目录都以.htaccess文件所在的/en/开头): 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

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

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


如果要将文件保留在文档根目录下并且无论如何都禁止访问,则可以使用旧样式的OrderAllow / Deny ,也可以按照Access control中的说明应用新的指令。 将.htaccess文件放在子目录reg_auth_rec_del/ajax等中。

Require all denied

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM