Php 使用.htaccess拒绝访问子文件夹和文件

Php 使用.htaccess拒绝访问子文件夹和文件,php,apache,.htaccess,Php,Apache,.htaccess,我有以下目录结构 localhost_foler |__test | |__d1/ | |__f1.html | |__d2/ | |__d3/ | |__d4/ | |__.htaccess 我想要实现的是拒绝访问d2、d3和d4中的所有文件,但允许php文件包含它们。同样对于d1,除了文件f1.html之外,其余的需要被阻止 要求:在测试目录中只有一个单

我有以下目录结构

localhost_foler
 |__test
      |
      |__d1/
      |   |__f1.html
      |
      |__d2/
      |
      |__d3/
      |
      |__d4/
      |
      |__.htaccess
我想要实现的是拒绝访问
d2
d3
d4
中的所有文件,但允许php文件包含它们。同样对于
d1
,除了文件
f1.html
之外,其余的需要被阻止

要求:在
测试
目录中只有一个单个
.htaccess
文件

我尝试的是:

Options -Indexes

<Files "d1/*">
    Deny From All
</Files>

<FilesMatch "^f1\.html">
    Allow from all
</FilesMatch>

<Files "d2/*">
    Order Deny,Allow
    Deny From All
    Allow From 127.0.0.1
</Files>

<Files "d3/*">
    Order Deny,Allow
    Deny From All
    Allow From 127.0.0.1
</Files>

<Files "d4/*">
    Order Deny,Allow
    Deny From All
    Allow From 127.0.0.1    
</Files>
选项-索引
全盘否定
通融
命令拒绝,允许
全盘否定
允许从127.0.0.1开始
命令拒绝,允许
全盘否定
允许从127.0.0.1开始
命令拒绝,允许
全盘否定
允许从127.0.0.1开始

您可以使用以下重写规则禁止访问文件夹中的文件:

RewriteEngine on

RewriteCond %{THE_REQUEST} !/d1/f1\.html [NC]
RewriteCond %{THE_REQUEST} /(d1|d2|d3|d4)/.+ [NC]
RewriteRule ^ - [R=403,L]

您可以使用以下重写规则禁止访问文件夹中的文件:

RewriteEngine on

RewriteCond %{THE_REQUEST} !/d1/f1\.html [NC]
RewriteCond %{THE_REQUEST} /(d1|d2|d3|d4)/.+ [NC]
RewriteRule ^ - [R=403,L]

谢谢,这很好,但可能你错过了其他部分,我还想禁用除一个文件外的所有d1文件,条件是什么?我以前没有使用过“重写条件”,所以我希望你不介意我问这个问题。@欢迎光临!我已经按照你的要求更新了代码。添加了一个基于前瞻性的正则表达式以从规则中排除该文件。感谢您的响应,但您的条件不起作用。问题是f1在d1中,而不在其他文件夹中。那需要不同的重写条件吗?很抱歉问这么多。谢谢,这很好,但可能你错过了其他部分,我还想禁用d1的所有文件,但一个文件除外,条件是什么?我以前没有使用过“重写条件”,所以我希望你不介意我问这个问题。@欢迎光临!我已经按照你的要求更新了代码。添加了一个基于前瞻性的正则表达式以从规则中排除该文件。感谢您的响应,但您的条件不起作用。问题是f1在d1中,而不在其他文件夹中。那需要不同的重写条件吗?抱歉问了这么多。