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

.htaccess «Разрешить от» и дополнительное заявление

Мне нужно создать конфигурацию .htaccess, и мне нужна помощь с этим. Моя версия apache - 2.4. Работает на Ubuntu.

Задание:

1) разрешить доступ к test-uri-1 аутентифицированным пользователям и пользователям с «белым» IP-адресом;

2) разрешить доступ к test-uri-2 и test-uri-3 только для аутентифицированных пользователей;

3) разрешить доступ ко всем другим URI без ограничений;

4) он должен работать только с файлом .htaccess в корне веб-проекта.

Мой первый пример кода:

SetEnvIf Request_URI ^test-uri-1$ require_auth=true
SetEnvIf Request_URI ^test-uri-2$ require_auth=true
SetEnvIf Request_URI ^test-uri-3$ require_auth=true
SetEnvIf Request_URI ^test-uri-2$ require_auth_force=true
SetEnvIf Request_URI ^test-uri-3$ require_auth_force=true
AuthType Basic
AuthName "Secure area"
AuthUserFile /wwwroot/.htpasswd
Order Deny,Allow
Deny from all
<If "-z reqenv('require_auth_force')">
    Allow from 1.2.3.4  4.3.2.1  1.1.1.1  2.2.2.2   
</If>
Satisfy any
Require valid-user
Allow from env=!require_auth

Это решение не работает. Как оказалось, условие IF могло проверять EnvVar только в том случае, если оно было определено в конфигурации сервера (но я могу использовать только файл .htaccess). В этом примере всегда требуется пароль для test-uri-1. Даже если у пользователя «белый» IP-адрес.

Мой второй пример кода:

SetEnvIf Request_URI ^test-uri-1$ require_auth=true
SetEnvIf Request_URI ^test-uri-2$ require_auth=true
SetEnvIf Request_URI ^test-uri-3$ require_auth=true
AuthType Basic
AuthName "Secure area"
AuthUserFile /wwwroot/.htpasswd
Order Deny,Allow
Deny from all
<If "'%{REQUEST_URI}' = 'test-uri-1'">
    Allow from 1.2.3.4  4.3.2.1  1.1.1.1  2.2.2.2   
</If>
Satisfy any
Require valid-user
Allow from env=!require_auth

Это решение тоже не работает. И я знаю, почему это так. Пароль требуется для test-uri-1, даже если у пользователя тоже "белый" IP-адрес.

Не могли бы вы помочь мне? Большое спасибо!