在目录上下文中启用apache用户目录中的基本authentication,而不是.htaccess文件

我在我的Ubuntu服务器上启用了Apache用户目录。 用户现在可以通过访问http://example.com/~username从浏览器加载他们的/home/username/public_html目录。

我试图密码保护这些目录。 我能够使用.htaccess文件正常工作,但我更愿意从Directory目录启用身份validation。 这是我的用户目录模块的configuration文件,位于/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> 

当我将浏览器导航到其中一个用户目录时,它甚至不会提示我input凭据。 当我切换回.htaccess方法,它正常工作。

每次对用户目录configuration文件进行更改后,我都重新加载了apache。 为什么不从目录上下文authentication工作?

把authentication指令放在一个单独的Location指令中,像这样:

 <IfModule mod_userdir.c> <Location ~ "/~.*"> AuthType Basic AuthName Private Authuserfile /etc/apache2/.htpasswd Require valid-user </Location> </IfModule> 

这将启用以“/〜”开头的每个path的密码validation。