Я включил каталоги пользователей 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>
Это включит аутентификацию по паролю для каждого пути, начинающегося с «/ ~».