Включение базовой аутентификации в пользовательском каталоге apache из контекста каталога вместо файла.htaccess

Я включил пользовательские каталоги Apache на моем сервере Ubuntu. Пользователь теперь может загрузить свои /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>

Это включит аутентификацию по паролю для каждого пути, начинающегося с "/~".

Другие вопросы по тегам