我正在尝试使用 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
它不适用于本地服务器或托管
AuthUserFile /fares/.htpasswd
提供给
AuthUserFile
的文件路径应该是绝对文件系统路径,而不是相对于根的URL路径(即它不应该相对于文档根),这就是它的样子。 (令人困惑的是,相对路径是相对于 ServerRoot
解析的,而不是相对于文件系统的根目录。)
“绝对文件系统路径”是服务器上
.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 附带)的工具,或类似的工具来生成密码的 hash。例如,它应该看起来更像这样:
fares:$apr1$6Szn.sq3$7E6ZMJLBAZKWX.wmGRISu1