从目录上下文而不是 .htaccess 文件在 apache 用户目录中启用基本身份验证

从目录上下文而不是 .htaccess 文件在 apache 用户目录中启用基本身份验证

我已在 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>

这将为以“/~”开头的每个路径启用密码验证。

相关内容