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

Как установить BasicAuth везде, ЗА ИСКЛЮЧЕНИЕМ определенных каталогов

Когда дело доходит до настройки защиты 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

Для получения дополнительной информации смотрите: Вот, Вот, Вот & Вот

PS: Краткий ответ на весь вопрос