使用 .htaccess 阻止对特定文件夹的 *全部* 访问

使用 .htaccess 阻止对特定文件夹的 *全部* 访问

我不确定该怎么做,但我想阻止对我的 Web 服务器上特定文件夹集的所有访问。例如 secret01 和 secret 02...

homeDir
  |- data
  |- www
  |   |- .htaccess (file)
  |   |- images
  |   |- js
  |   |- secret01
  |   |- secret02
  |   |...
  |...

我需要向我的根 .htaccess 文件添加哪些规则才能实现这一点?我希望阻止所有来自网络的访问进入这些文件夹,仅此而已。唯一可以访问这些文件夹的方法就是通过SFTPSSH。那么我要寻找什么规则呢?我最好寻找一行代码,这样我就可以添加更多文件夹或将其移动到其他站点。我真的希望规则可以放在 .htaccess 根文件中,这样我就不必到处跳来跳去锁定和解锁文件夹。

= 更新清晰度 =

我无法访问此主机的 conf 文件(它处于共享环境中),并且我需要将这些文件夹放在 webroot 中,以便用于一些 shell 用途。如果可以的话,我早就将它们移出 webroot 了。

我也不想搞乱文件权限,只想制定一条规则.htaccess来阻止网络流量访问文件夹或一组文件夹。

答案1

你可以创建一个 .htaccess 文件

DENY FROM ALL

对于文件夹(将文件放入其中)。

同样在 www/.htaccess 上使用 mod_rewrite:

RewriteEngine On
RewriteRule ^(secret1|secret2|asdf) - [F,L]

答案2

如果您确实不希望它们通过 HTTP 访问 Internet,那么您应该将它们完全移出 Web 树。

您还可以使用文件系统权限。例如,如果 Apache 以用户身份运行apache,但您希望文件只能通过 SSH 访问,那么user23您可以设置 secret* 为所有者user2,但不能公开读取。当然,这里还有几乎无穷无尽的其他选项。组、文件系统 ACL 等等。

对于 ACL,您可以使用 mod_authz。最好将配置保留在 conf 中,而不是 中.htaccess。将它们保留在 中.htaccess会引入更多暴露,并可能被较低权限的人操纵。

mod_authz 文档

相关内容