.htaccess只允许来自某个ip的某个特定路径

时间:2014-07-29 16:17:01

标签: .htaccess mod-rewrite

我需要只允许访问一个特定网址,并且只能访问某个特定网址(范围)。

我尝试过(似乎它会起作用但不起作用)是:

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限制,但我发现无法修复它。

1 个答案:

答案 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]