Apache - 使用 .htaccess 仅对根目录抛出 403,特定 IP 除外

Apache - using .htaccess to throw 403 for root directory only, except of particular IPs

我的 apache 服务器 可以通过 public IP 和指向该 IP 的域从 Internet 访问。

我要实现的是:

我现在得到的:

RewriteEngine on
RewriteCond %{SERVER_NAME} !=192.168.44.100
RewriteCond %{SERVER_NAME} !=10.44.0.1
RewriteCond %{REQUEST_URI} !^/$
RewriteRule ^. - [F,L]

虽然我认为关于 ip 地址的两个条件都可以正常工作,但我正在努力为根目录制定正确的规则
我已经检查过,根目录的 REQUEST_URIREQUEST_FILENAME return 是相同的,即“/

很可能我无法在那里编写正确的正则表达式。


我花了很多时间做研究,i.a。 here, here, here, also here, here as well, even there,
here is a bit different case

但是它们都没有像预期的那样工作,有一次它对任何 url 都不可访问,另一次它根本不起作用.


@edit 26.12.2015

几个星期后我不得不重新启动我的服务器(这并不经常发生)并注意到 access do root dir / 现在被禁止 甚至在我的本地网络中(直到现在它按预期工作)。

我不得不更正 所以现在我的配置是这样的:

<DirectoryMatch "^/var/www/$">
Require all denied
Require ip 192.168.44.0/24
Require ip 10.44.0.0/24
</DirectoryMatch>

您可能必须在 Apache 虚拟主机配置中使用目录指令来完成您想要的。对于阿帕奇 2.4

<DirectoryMatch "^/path/to/root/$">
    Require all denied
    Require ip 192.168.44.100
    Require ip 10.44.0.1
</DirectoryMatch>

<DirectoryMatch "^/path/to/root/*/">
    Require all granted
</DirectoryMatch>