如何使用 htaccess 文件锁定文件夹?

Posted

技术标签:

【中文标题】如何使用 htaccess 文件锁定文件夹?【英文标题】:How do I lock a folder with htaccess file? 【发布时间】:2021-09-08 07:43:15 【问题描述】:

我正在尝试使用 htaccess 文件锁定我网站上的文件夹 我在根目录中创建了一个 htaccess 文件,并在我要锁定的文件夹中创建了一个 htpasswd 文件 但问题是它不起作用,我被禁止进入整个网站,直到我从 .htaccess 文件中删除“需要有效用户”才能进入该网站。

htaccess 文件

ErrorDocument 404 /404.html
#Protect Directory
AuthName "Dialog prompt"
AuthType Basic
AuthUserFile /fares/.htpasswd
Require valid-user

htpasswd 文件

fares:djefaflia

它在本地服务器或主机上不起作用

【问题讨论】:

【参考方案1】:
AuthUserFile /fares/.htpasswd

提供给AuthUserFile 的文件路径应该是绝对文件系统路径,而不是看起来像这样的相对于根目录的 URL 路径(即相对于文档根目录)。

“绝对文件系统路径”是服务器上.htpasswd 文件的完整文件路径。例如,如果您的文档根目录(您的 HTML 文件所在的位置)的服务器路径是 /home/user/public_html,并且您希望在文档根目录中保护目录 /fares,并且您将在其中存储 .htpasswd 文件目录(尽管不建议这样做 - 见下文),那么 AuthUserFile 指令应该如下所示:

AuthUserFile /home/user/public_html/fares/.htpasswd

但是,您应该避免将密码文件存储在您要保护的同一目录中(出于安全原因)。理想情况下,该文件将存储在文档根目录之外(即公共 HTML 空间之外)。例如,您可以将文件结构镜像到文档根目录上方的 htpasswds 目录中,在该目录中存储系统上所有相关的 .htpasswd 文件:

AuthUserFile /home/user/htpasswds/fares/.htpasswd
fares:djefaflia

正如所写,这并不“看起来”正确(除非您有意尝试存储纯文本密码 - 这在 Linux 上不起作用)。您是如何生成 password 文件的?您应该使用像htpasswd.exe(Apache 附带)这样的工具,或者类似的工具来生成密码的散列。例如,它应该看起来更像这样:

fares:$apr1$6Szn.sq3$7E6ZMJLBAZKWX.wmGRISu1

【讨论】:

向我解释更多,因为我完全明白我现在应该做什么 @Fares 您在为哪一点苦苦挣扎?我已经详细介绍了它。 here : 提供给 AuthUserFile 的文件路径应该是绝对文件系统路径,而不是看起来像这样的相对于根目录的 URL 路径(即相对于文档根目录)。跨度>

以上是关于如何使用 htaccess 文件锁定文件夹?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 htaccess 重定向一堆文件

如何使perl在NFS中以非阻塞模式锁定文件

使用 .htaccess 时如何使 mod_rewrite *not* 执行主目录扩展

如何在本地主机上使用 htaccess 制作 seo url? [关闭]

通过https忽略htaccess文件

如何选择将锁定文件添加到 docker 容器?