我已在 Ubuntu 服务器上启用了 Apache 用户目录。用户现在可以/home/username/public_html
通过访问从浏览器加载他们的目录http://example.com/~username
。
我正在尝试用密码保护这些目录。我能够使用文件使其正常工作.htaccess
,但我更愿意从目录上下文启用身份验证。这是我的用户目录模块的配置文件,位于/etc/apache2/mods-enabled/userdir.conf
:
<IfModule mod_userdir.c>
UserDir public_html
UserDir disabled root
<Directory /home/*/public_html>
AuthType Basic
AuthName Private
Authuserfile /etc/apache2/.htpasswd
Require valid-user
Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
<Limit GET POST OPTIONS>
Require all granted
</Limit>
<LimitExcept GET POST OPTIONS>
Require all denied
</LimitExcept>
</Directory>
</IfModule>
当我将浏览器导航到其中一个用户目录时,它甚至不会提示我输入凭据。当我切换回该.htaccess
方法时,它可以正常工作。
每次更改用户目录配置文件后,我都会重新加载 apache。为什么目录上下文中的身份验证不起作用?
答案1
将身份验证指令放入单独的Location
指令中,如下所示:
<IfModule mod_userdir.c>
<Location ~ "/~.*">
AuthType Basic
AuthName Private
Authuserfile /etc/apache2/.htpasswd
Require valid-user
</Location>
</IfModule>
这将为以“/~”开头的每个路径启用密码验证。