.htaccess 拒绝所有-> 目录索引不起作用(拒绝所有和白名单文件)

Posted

技术标签:

【中文标题】.htaccess 拒绝所有-> 目录索引不起作用(拒绝所有和白名单文件)【英文标题】:.htaccess deny all --> directoryindex not working (deny all & whitelisting files) 【发布时间】:2011-11-30 13:23:26 【问题描述】:

我想拒绝访问服务器上的所有文件和目录,但我明确允许的一些文件和目录除外。如何使用 .htaccess 做到这一点?为什么我的方法不起作用?我知道我必须允许 .css、.jpg 等。

DirectoryIndex index.html

Order Deny,Allow
Deny from all
Allow from 127.0.0.1

<Files index.html>
  order Allow,Deny
  Allow from all
</Files>

编辑:当我尝试访问 index.html 时,上面的 .htaccess 给了我一个“禁止”错误。为什么?

编辑:这似乎可以解决问题。我希望没有留下任何漏洞:

#Disallow everything
<filesmatch "\.+">
    Order Allow,Deny
    Deny from all
</filesmatch> 

#Allow index
<Files index.html>
  order Allow,Deny
  Allow from all
</Files>

#Allow peripheral files
<FilesMatch "\.(css|png|jpg|js|ico)$">
    Order Allow,Deny
    Allow from all
</FilesMatch>

【问题讨论】:

第一个指令应该是&lt;FilesMatch ".+"&gt;"\.+" 只匹配包含点的文件,但允许没有点的文件。 【参考方案1】:

IP 地址:127.0.0.1 可以访问您的服务器,而其他人则不能。 这部分:

<Files index.html>
  order Allow,Deny
  Allow from all
</Files>

为所有用户设置对 index.html 的访问权限,但请记住,因为您没有提及其他文件,他们具有默认访问属性。 例如下面的代码允许文件:01.jpeg01.html 或以 xml 结尾的任何内容。

 <FilesMatch      !"(01\.jpe?g|01\.html|xml)$"> 
  order Allow,Deny
  allow from 127.0.0.1


</FilesMatch>

【讨论】:

以上是关于.htaccess 拒绝所有-> 目录索引不起作用(拒绝所有和白名单文件)的主要内容,如果未能解决你的问题,请参考以下文章

.htaccess 拒绝目录访问

使用 .htaccess 拒绝访问目录中的所有 PHP 文件

.htaccess,命令允许、拒绝、拒绝所有:困惑?

拒绝访问 .htaccess 中的一个特定文件夹

客户端被服务器配置 htaccess 拒绝

PHP强制下载,htaccess拒绝所有,无法读取文件头