Подтвердить что ты не робот

.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-адресов) не запрашивали пароль, но все остальные?

4b9b3361

Ответ 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