.htaccess/.htpasswd, если на определенном IP-адресе
Возможно ли иметь установку управления доступом .htaccess/.htpasswd для данного каталога, но если они относятся к определенному IP-адресу, обход аутентификации входа/пароля?
Я знаю, что вы можете сделать что-то подобное в файле .htaccess:
order deny,allow
deny from all
allow from 000.000.000.000
Но если вы добавите что-то вдоль этих строк:
AuthType Basic
AuthName "restricted area"
AuthUserFile /path/to/.htpasswd
require valid-user
Затем он запрашивает пароль. Есть ли способ сделать установку типа if/else или какое-либо другое решение, чтобы пользователи как заданный IP (или набор IP-адресов) не запрашивали пароль, но все остальные?
Ответы
Ответ 1
Для версий 2.2.X вы можете использовать следующее...
AuthUserFile /var/www/mysite/.htpasswd
AuthName "Please Log In"
AuthType Basic
require valid-user
Order allow,deny
Allow from xxx.xxx.xxx.xxx
satisfy any
Очевидно, замените путь на ваш файл users и ip-адрес, который вы хотите обойти проверку подлинности.
Дальнейшее объяснение специфики можно найти по адресу: http://httpd.apache.org/docs/2.2/howto/auth.html
Ответ 2
Если вы используете apache >= 2.4, это будет примерно так:
<If "%{REMOTE_ADDR} != '127.0.0.1'">
AuthType Basic
AuthName "restricted area"
AuthUserFile /path/to/.htpasswd
require valid-user
</If>
Для получения дополнительной информации просмотрите docs.
Ответ 3
Я запускаю Apache/2.2.16 (Debian) и имел аналогичную проблему, я решил это следующим образом:
(Это можно запустить как в файле .htaccess, так и непосредственно в virtualhost под <Location/>
)
Order deny,allow
Deny from all
AuthType Basic
AuthUserFile /home/somesite/.htpasswd
AuthName "No entry, unless"
Require Valid-user
Allow from x.x.x.x
Allow from x.x.x.x
Satisfy Any
Я разрешил запись без пароля из двух разных ip, а остальные должны ввести пароль для ввода.
Ответ 4
В дополнение к ответу j5Dev:
# Interne IP-Adressen
SetEnvIf Remote_Addr "^127\.0\.0\.1$" IsIntern
SetEnvIf Remote_Addr "^192\.168" IsIntern
# .. add more IP addresses or ranges here
# Authentication, wenn nicht intern
AuthUserFile /path/to/.htpasswd
AuthName "restricted area"
AuthType Basic
require valid-user
Order allow,deny
Allow from env=IsIntern
satisfy any