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