我的 Windows 服务器上有 apache 2.4.57。我新建了一个文件夹,只需要显示可以下载的文件。在 httpd.conf 文件中,我添加了以下内容:
Alias "/pw_files" "f:\www_shared\pw_files"
<Directory "f:\www_shared\pw_files">
Require all granted
Options Indexes
IndexOptions FancyIndexing HTMLTable FoldersFirst SuppressDescription SuppressLastModified NameWidth=* IconWidth=20 IconHeight=20
IndexStyleSheet /css/autoindex.css
</Directory>
我在 f:\www_shared\pw_files 中创建了一个 .htpasswd 文件:
AuthType Basic
AuthName "please enter credentials"
AuthUserFile f:\www_shared\pw_files
AuthGroupFile "c:/apache_php/apache/htpasswd_group2.txt"
Require group pw_files
我创建了一个新用户:
htpasswd -c f:\www_shared\pw_files\.htpasswd pw_user
我将输出从 .htpasswd 移至 c:\apache_php\apache 中的 .htpasswd 文件
在 c:/apache_php/apache/htpasswd_group2.txt 我有:
pw_files: admin pw_user
我进行了这些更改并重新启动。
但是,当我去:
http://www.example.com/pw_files
我需要查看该文件夹的内容,但我从未收到输入用户名和密码的提示。我不确定我错过了什么。
最大的误解之一是 Apache 密码保护和 mod 重写规则必须放在
.htaccess
文件中。那是错误的。https://httpd.apache.org/docs/2.4/howto/htaccess.html#when您显然可以访问主要的 Apache 配置并且
httpd.conf
;那么建议将您的访问限制放在<Directory "f:\www_shared\pw_files">
您已有的部分中。其次:您的
f:\www_shared\pw_files
似乎是一个目录,然后AuthUserFile f:\www_shared\pw_files
是不正确的,因为AuthUserFile
指令需要一个文件路径。代替使用AuthUserFile f:\www_shared\pw_files\.htpasswd
。然后:
.htaccess
除非使用AllowOverride
指令启用并且允许其中使用的指令类,否则文件将被忽略。最后:摆脱
Require all granted
基本上删除所有访问限制的指令: