【问题标题】:htaccess - Block access to a directory but allow access to files in a specific directoryhtaccess - 阻止访问目录但允许访问特定目录中的文件
【发布时间】:2021-03-19 03:50:01
【问题描述】:

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

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

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

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

这就是我的.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 放入&lt;IfModule&gt;。之后,我确实不能访问其他目录了,但是我不能再访问任何目录下的任何文件了。

【问题讨论】:

  • 仅仅因为你关闭了目录索引,你就不能再访问文件是没有意义的。
  • 您能否解释一下“但不允许用户访问任何其他文件夹” 的确切含义?你的意思是,如果我的 uid 是 15,那么我应该被允许访问 /customers/15/ 中的文件,但不能访问像 /customers/123/ 这样的任何其他子文件夹?此时服务器对您的“uid”一无所知。
  • 是的,如果您尝试键入 /customers/15 或任何子文件夹,服务器将拒绝您的访问。但是,您可以访问,例如 /customers/15/logo.png 或 /customers/15/download.pdf(但不能访问 /customers/123/download.pdf)
  • 嗯,第一个只是关闭目录索引的情况。您说您在阻止访问 文件 时遇到了什么问题,目前尚不清楚。 “但不是 /customers/123/download.pdf 也不是” - 当您说 uid 时,您的意思是您创建的任意 ID,对吗?您不是在谈论操作系统级别的任何系统用户ID吗?如果 web 服务器不知道这个 uid,那么使用 .htaccess 将无法实现

标签: apache .htaccess


【解决方案1】:

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

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

...等

在每个 .htaccess 中,您将拥有:

Allow from all

【讨论】:

  • 通过指示,它会阻止其他文件夹的访问吗? (因为我只指出 ./images 是允许的,而没有提及是否拒绝访问其他文件夹)
  • 还有,因为每次有新客户都会生成一个新文件夹。那么这真的是最好的方法吗(我需要能够每次都生成一个新的.htaccess)。如果我可以使用根文件夹中的 .htaccess 来做到这一点会更好
  • 另外,我注意到通过放置 ... 它会给我 500 个内部服务器错误
  • 是的,只需在没有 子句的情况下从所有人中允许您可以阻止从主 .htaccess 文件访问其他文件夹,为每个用户目录生成 .htaccess 文件是最简单的方法,它不会占用太多空间,因为它只有 1 行
猜你喜欢
  • 2011-09-26
  • 1970-01-01
  • 2012-08-22
  • 2023-04-01
  • 2011-09-16
  • 2019-03-03
  • 2016-05-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多