【发布时间】:2017-10-03 15:54:56
【问题描述】:
这是一个常见的问题,但我有点愚蠢,所以其他方法对我不起作用。我想拒绝访问以下子目录(注意:主站点位于这样的http://localhost/en/ 并且每个子目录都以/en/ 盯着.htaccess 文件所在的位置):reg_auth_rec_del/ajax/(及其所有文件),@987654326 @、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
【问题讨论】:
-
我不知道
if(defined...)的把戏。 -
我认为其他帖子可以帮助stackoverflow.com/a/11729748/6208463
-
如何在页面上使用它们?如果像 media/translations/en-US.php 这样的文件只是包含在 PHP 头文件中,您可以拒绝访问(Apache 2.2 中的
Deny from all,2.4 中的Require all denied)但如果 media/scripts 包含在前端使用的 JavaScript 文件,您必须允许访问,否则它们将无法在客户端运行;最好的办法是禁用目录索引。 -
@CD001 是的,脚本连接到像
<script src="media/scripts/jquery.js"></script>这样的文件,并且部分包含在我的其他页面中。我想拒绝访问ajax文件夹(除了helper.php),以防万一服务器崩溃以防止用户查看所有会话数据 -
如果您将这些其他文件放在 webroot 之外的文件夹中,则它们无法在浏览器中访问它们。例如,点 apache 将其设置为 webroot
/mysite/public,然后将/mysite/templates/中的部分模板