2012-01-13 3 views
16

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

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

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

+1

http://stackoverflow.com/questions/3908592/ht-access-ip- ограничение-и-Htpasswd попробовать что – Ascherer

+0

вы пробовали 'SetEnvIf remote_addr^127 \ 0,0 \ 0,0 \ 0,1 $ develmode = yes' –

ответ

25

Вы должны посмотреть ключевые слова 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. 
+0

спасибо большое, это работает ! – Martin

+0

И пусть не будет места после ','! Apache дает ошибку 500, если вы «deny, allow». – guaka

14

В 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 

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

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

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

Смежные вопросы