我需要只允许访问一个特定网址,并且只能访问某个特定网址(范围)。
我尝试过(似乎它会起作用但不起作用)是:
SetEnvIf Request_URI ^/call/this\.php/with/some/parameters url_ok
Order Deny,Allow
Deny from All
Allow from env=url_ok
Allow from 10.0.0.0/23
Satisfy All
url限制工作正常,但是当我从192.168.0.1访问它时它仍然可见,它不应该是。
看起来似乎“拒绝来自所有人”并不会涵盖env和ip限制,但我发现无法修复它。
答案 0 :(得分:0)
我认为问题在于Satisfy All
is interpreted。这里的问题是All
表示:
在这种情况下,默认行为(All)是要求客户端传递地址访问限制并输入有效的用户名和密码。
因此,访问限制是" all"的Allow
部分,另一部分是用户名/密码。由于您没有使用身份验证,因此假定该部分已满足。现在,Allow
指令的内容是它们都是OR' ,这意味着满足任何 Allow
就足够了。例如:
Allow from 1.2.3.4
Allow from 2.3.4.5
这些指令在逻辑上OR
在一起,因为它不可能同时来自1.2.3.4
AND 2.3.4.5
。
你想要做的事实上可能实际上是使用mod_rewrite这样的东西:
RewriteEngine On
RewriteCond %{REMOTE_ADDR} ^10\.0\.0\.
RewriteRule ^call/this\.php/with/some/parameters - [L]
RewriteRule ^ - [L,F]