Аутентификация Apache, кроме localhost - программирование
Подтвердить что ты не робот

Аутентификация Apache, кроме localhost

Мне нужно применить HTTP-аутентификацию только при публичном использовании веб-сайта, но я не применяю его на своем локальном хосте. Это .htaccess, который, как я думаю, должен работать. Но он не работает - он все еще спрашивает меня о пользователе /​​pass.
Что я делаю не так?

SetEnvIf Remote_Addr ^127\.0\.0\.1$ develmode
<IfDefine !develmode>
    AuthType Basic
    AuthName "ADMIN"
    AuthUserFile /path/to/.htpasswd
    Require valid-user
</IfDefine>

mod_setenvif включен, конечно.

4b9b3361

Ответ 1

Вам нужно посмотреть ключевые слова order и satisfy. Ниже приведен рабочий пример с моего сайта. Сначала мы говорим, что принимаем IP или USER. Затем мы определяем путь к файлу htpasswd и принимаем действительного пользователя из этого файла. Наконец, мы определяем, какие клиентские IP-адреса могут получить доступ к нашей сети без авторизации (мы отказываемся от всех других IP-адресов, так что они должны аутентифицироваться через htpasswd).

# permit by USER || IP
Satisfy any
# USER
AuthUserFile /var/www/munin/.htpasswd
AuthGroupFile /dev/null
AuthName "Password Protected Area"
AuthType Basic
require valid-user
# IP
order deny,allow
deny from all
allow from 11.22.33.

Ответ 2

В Apache 2.4, allow, deny и satisfy больше не используются, ограничение IP-адреса также выполняется с помощью require:

AuthUserFile /path/to/.htpasswd
AuthName "Restricted Access"
AuthType Basic
Require ip 127.0.0.1
Require valid-user

Если какая-либо из директив "Требовать" выполнена, запрос разрешен. Если вы хотите потребовать их обоих, группируйте их в блок <RequireAll>.

Для ограничения доступа к локальному доступу вы можете использовать специальный синтаксис Require local вместо Require ip 127.0.0.1

Подробнее: http://httpd.apache.org/docs/2.4/mod/mod_authz_core.html#require