Мне нужно создать конфигурацию .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-адрес.
Не могли бы вы помочь мне? Большое спасибо!