.htaccess“允许来自”和附加语句

.htaccess“允许来自”和附加语句

我需要创建一些 .htaccess 配置,我需要一些帮助。我的 apache 版本是 2.4。在 Ubuntu 上运行。

任务:

1)允许经过身份验证的用户和具有“白色”IP 地址的用户访问 test-uri-1;

2)仅允许经过身份验证的用户访问 test-uri-2 和 test-uri-3;

3)允许无限制访问所有其他 URI;

4)它应该只使用 Web 项目根目录中的 .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

这个解决方案也不起作用。我知道为什么会这样。即使用户有“白”IP 地址,test-uri-1 也需要密码。

你能帮助我吗?非常感谢!

相关内容