Назад | Перейти на главную страницу

Включение базовой аутентификации в пользовательском каталоге 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 после каждого изменения файла конфигурации каталога пользователя. Почему аутентификация не работает из контекста Каталога?

Поместите директивы аутентификации в отдельный Location директива, например:

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

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