Когда дело доходит до настройки защиты 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 везде на сервере, за исключением определенных каталогов?
решение1
Любое последующее определение должно переопределять предыдущее определение в файлах конфигурации 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
Для получения более подробной информации смотрите: здесь,здесь,здесь&здесь
решение2
Это для вашей основной аутентификации.
<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, если можете, чтобы уменьшить доступ к жесткому диску, таким образом вы увеличите производительность своего веб-сайта.