我在 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
它让我可以直接查看文件夹的内容,但我从未收到输入用户名和密码的提示。我不确定我错过了什么。
答案1
一个很大的误解是,Apache 密码保护和 mod-rewrite 规则必须放在.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
基本上消除所有访问限制的指令:
Alias "/pw_files" "f:\www_shared\pw_files"
<Directory "f:\www_shared\pw_files">
Options Indexes
IndexOptions FancyIndexing HTMLTable FoldersFirst SuppressDescription SuppressLastModified NameWidth=* IconWidth=20 IconHeight=20
IndexStyleSheet /css/autoindex.css
AuthType Basic
AuthName "please enter credentials"
AuthUserFile "f:/www_shared/pw_files/.htpasswd"
AuthGroupFile "c:/apache_php/apache/htpasswd_group2.txt"
Require group pw_files
</Directory>