Когда дело доходит до настройки защиты BasicAuth для определенного каталога, я использую простую настройку (в apache2.conf
файл):
<Directory /var/www/somedir/>
Deny from all
AuthUserFile /var/pswd/somedir/.htpasswd
AuthName authorization
AuthType Basic
Satisfy Any
require valid-user
</Directory>
Но я бы хотел установить BasicAuth везде на сервере по умолчанию и разблокировать его только для определенных каталогов (веб-сайтов, доменов).
Итак, как можно было установить BasicAuth везде на сервере, кроме определенных каталогов?
Это для вашей основной аутентификации
<Directory /var/www/somedir/>
Order deny,allow
Deny from all
AuthName "User Authentication"
AuthType Basic
AuthUserFile /var/pswd/somedir/.htpasswd
Require valid-user
</Directory>
это исключение для вашей папки
<Directory /var/www/somedir/accessibleDir/>
Allow from all
</Directory>
чтобы добавить пользователя в список пользователей, используйте:
htpasswd -b -m /var/pswd/somedir/.htpasswd {User} {Pass}
старайтесь не использовать .htaccess, если можете, чтобы уменьшить доступ к жесткому диску, вы таким образом повысите производительность своего веб-сайта.
Любое последующее определение должно отменять предыдущее определение в файлах конфигурации apache. Попробуйте следующее, это должно исправить.
<Directory /var/www/>
Order deny,allow
Deny from all
AuthUserFile /var/pswd/somedir/.htpasswd
AuthName authorization
AuthType Basic
Satisfy Any
require valid-user
</Directory>
Alias /path/to/opendir/ /public
<Directory /var/www/opendir/>
Allow from all
</Directory>
Вы также можете использовать .htaccess
чтобы контролировать это, добавив:
Override Auth
Allow from all
Satisfy any
Для получения дополнительной информации смотрите: Вот, Вот, Вот & Вот