使用 .htaccess 或 vhost.conf 禁止目录中除具有特定名称的子目录之外的所有内容

使用 .htaccess 或 vhost.conf 禁止目录中除具有特定名称的子目录之外的所有内容

如何使用 htaccess 甚至 vhost.conf 禁止目录中除具有特定名称的任何子目录之外的所有内容?我有一个受保护的主目录,其中包含子目录。每个子目录都有另一个名为“thumbs”的子目录,我想允许人们访问它。在 thumbs 文件夹中,我有一些文件,它们的文件名都以“thumb_”前缀开头。那么应该使用哪种方法,.htaccess FilesMatch 还是 vhost DirectoryMatch?以及应该使用什么代码?谢谢

答案1

因此,如果我理解正确的话,您只希望允许名为 的文件thumb_*位于名为 的目录中thumbs,而该目录位于受保护目录的子目录中?不强制使用名为 的目录会更简单thumbs,因为那时您只需要<FilesMatch>

听起来这条路径是,例如,/path/to/protected_dir/subdir/thumbs/thumb_1.png

如果正确的话,这应该会强制执行您正在寻找的限制类型 - 只需确保没有其他可能干扰权限设置的配置块:

<Directory /path/to/protected_dir>
  Order Deny,Allow
  Deny from all
</Directory>
<LocationMatch "^/url/path/to/protected_dir/[^/]+/thumbs/thumb_.*">
  Allow from all
</LocationMatch>

如果您不担心强制执行精确的目录树结构,那么这会简单得多:

<Directory /path/to/protected_dir>
  Order Deny,Allow
  Deny from all
  <FilesMatch "^thumbs_.*">
    Allow from all
  </FilesMatch>
</Directory>

相关内容