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

Php 拒绝通过.htaccess访问某些子目录,php,apache,.htaccess,Php,Apache,.htaccess,这是一个常见的问题,但我有点笨,所以其他人的方法对我不起作用。我想拒绝访问以下子目录(注意:主站点的位置如下http://localhost/en/每个子目录都以/en/开始,其中.htaccess文件位于:reg\u auth\u rec\u del/ajax/(及其所有文件),媒体/部件/,媒体/脚本/,媒体/翻译/。但问题是,所有这些文件都在所有页面上使用(例如,media/parts/footer.php在所有页面上使用,并且可以在index.php等页面上查看。因此,我想防止用户直接查

这是一个常见的问题,但我有点笨,所以其他人的方法对我不起作用。我想拒绝访问以下子目录(注意:主站点的位置如下
http://localhost/en/
每个子目录都以
/en/
开始,其中
.htaccess
文件位于:
reg\u auth\u rec\u del/ajax/
(及其所有文件),
媒体/部件/
媒体/脚本/
媒体/翻译/
。但问题是,所有这些文件都在所有页面上使用(例如,
media/parts/footer.php
在所有页面上使用,并且可以在
index.php
等页面上查看。因此,我想防止用户直接查看所有这些文件

我的意思是,我不想让它们直接可见

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

$admins=array(“192.168.0.100”、“192.168.0.101”、“192.168.0.102”);
$ip=$\u服务器['REMOTE\u ADDR'];
if(在数组中($ip$admins,true)){
$\会话['PERMISSIONS']=“ADMIN”;
}否则{
$\会话['PERMISSIONS']=“USER”;
}
//因此,如果$_SESSION['PERMISSIONS']==“USER”,我可以决定是否要打开对某些文件的访问,然后
//如果用户可以查看该文件

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

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


如果要将文件保留在文档根目录内并禁止访问,可以使用旧样式和
Allow
/
Deny
,或应用中所述的新指令。将.htaccess文件放在子目录
reg\u auth\u rec\u del/ajax

Require all denied

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

我不知道
if(defined…
诀窍。我想这篇文章可以帮助你在页面上如何使用它们?如果像media/translations/en-US.php这样的文件只是包含在一个php头文件中,你可以拒绝访问(
Deny from all
在Apache 2.2中,
在2.4中要求all Deny
)但是,如果媒体/脚本包含前端使用的JavaScript文件,则必须允许访问,否则它们将无法运行客户端;最好是禁用目录索引。@CD001是的,脚本连接到这样的文件
,部分包含在我的其他页面中。我想拒绝对
ajax的访问
文件夹(除了
helper.php
)以防万一,如果服务器崩溃以阻止用户查看所有会话数据,如果您将这些其他文件放在webroot之外的文件夹中,他们将无法在浏览器中点击这些文件。例如,指示apache将其设置为webroot
/mysite/public
,然后将部分模板放在
/mysite/templates/
中,那么
RedirectMatch
?是否有使用它的解决方案?
RedirectMatch
仅在您想发送其他资源时才有用。