我只是想知道是否可以使用 .htaccess 和 .htpasswd 文件保护具有用户名/密码组合的目录,但不保护其中的文件。即,人们可以将该目录中的图像链接给朋友,但如果没有用户名/密码,则不允许浏览目录本身。提前感谢大家。
答案1
尝试一下.htaccess
:
Require valid-user
<Files ?*>
Order allow,deny
Allow from all
Satisfy any
</Files>
这里Require valid-user
要求任何已知的登录名。然后,您修改此限制,使其适用于名称中至少有一个字符的文件(这是?*
该<Files>
部分的 glob 模式将匹配的内容),这实际上意味着所附规则适用于文件,但不适用于目录。
在修改的文件规则中,关键是Satisfy any
。它允许授权通过任何一个证书或者IP 地址。然后您允许任何要传递的 IP 地址,因此请求总是已授權。
因此现在浏览此目录或其任何子目录都需要登录,但直接从中检索文件则不需要。
这正是您想要的。
答案2
是的,您可以通过名称或模式保护文件和目录。您应该已经使用它来限制对 .ht* 文件的访问。检查您的 apache 配置。所需的文件模式可能是“/$”。
答案3
使用LocationMatch
将身份验证内容限制在目录索引内。
答案4
如果您希望目录列表仅对授权用户可见,但允许任何人下载文件(以便您可以向人们发送链接),则需要某种类型的脚本(PHP、ASP 等),该脚本会要求用户输入密码,如果输入正确,则会显示目录的内容。您可以将此脚本放在目录中并将其命名为 index.php,以便它得到服务,而不是由 apache 生成目录索引。