htaccess - 阻止访问目录但允许访问特定目录中的文件

时间:2021-03-19 03:50:01

标签: apache .htaccess

在我的服务器中,我有一个名为 customers 的文件夹,其中包含子文件夹 [uid] (/customers/[uid]),其中 uid 是分配给每个客户的唯一标识符。每个 /customers/[uid] 中还有其他文件夹。

其中有一个名为 images 的文件夹,顾名思义,它包含图像。

我想配置 .htaccess 以便用户只能直接访问 /customers/[uid]/images 中的文件,但不允许用户访问任何其他文件夹或任何目录列表。

因为我对.htaccess的语法不是很熟悉,我试着在网上搜索了一些答案,但我仍然很困惑。特别是考虑到我的 RewriteRule 中已经有一个 .htaccess。我不确定在哪里以及如何添加更多内容来完成我想要的。

这就是我的 .htaccess 现在的样子。

DirectoryIndex test.php
<Files "database.ini">  
  Order Allow,Deny
  Deny from all
</Files>

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.*)$ $1.php [L]

</IfModule>

我使用的是 VPS 主机,默认情况下启用目录索引。所以现在如果我尝试访问 /customers/user,它会给我一个文件夹列表,我可以在其中继续访问其他文件夹和文件

我尝试将 Options -Indexes 放入 <IfModule>。之后确实无法访问其他目录,但无法再访问任何目录中的任何文件。

1 个答案:

答案 0 :(得分:1)

您要做的是为每个用户目录创建一个 .htaccess 文件,并在其中允许访问 ./images 所以你会有

/customers/[uid1]/.htaccess
/customers/[uid2]/.htaccess 

...等

并且在您将拥有的每个 .htaccess 中:

Allow from all