基于 IP 的 Apache 2.4 mod_authz_host 使用 htaccess 启用索引(文件夹视图)

Posted

技术标签:

【中文标题】基于 IP 的 Apache 2.4 mod_authz_host 使用 htaccess 启用索引(文件夹视图)【英文标题】:Enabling Indexes (folder views) using htaccess with Apache 2.4 mod_authz_host based on IP 【发布时间】:2015-05-05 23:59:45 【问题描述】:

需要通过基于IP的htaccess在apache 2.4中启用索引。

例如,IP 192.168.x.x

我尝试将指令放在 apache2.conf 文件中,例如:

    <Directory /var/vhosts/lubrigard.com>
            Options -Indexes +FollowSymLinks +MultiViews
            AllowOverride All
            Require all granted
    </Directory>

然后

    <Directory /var/vhosts/lubrigard.com>
            Options +Indexes +FollowSymLinks +MultiViews
            AllowOverride All
            Require ip 192.168
    </Directory>

但是对于任何其他 IP,它会拒绝对该文件夹的任何访问。

所以我在站点范围内禁用了索引,并希望放置一个 .htaccess 文件来启用内部 IP 地址的索引。除非有人可以告诉我如何在 apache2.conf 文件中执行此操作。

【问题讨论】:

【参考方案1】:

这有效,它显示“禁止访问,您无权访问此服务器上的 /folder/。”而不是“目录列表被拒绝”。我仍然可以访问该文件夹中的文件。

 <If "%REMOTE_ADDR == '192.169.0.95'">
 Options +Indexes +FollowSymLinks +MultiViews
 Require all granted
 </If>
 <Else>
 Options -Indexes +FollowSymLinks +MultiViews
 Require all granted
 </Else>

我也试过了:

 <If "%REMOTE_ADDR == '192.169.0.95'">
 Options +Indexes
 </If>
 <Else>
 Options -Indexes
 </Else>

两者都有效。我唯一的问题是我不想指定完整的 IP。我宁愿它使用IP的前3个字节:192.168.0.xxx

由于某种原因,如果未启用索引,则用户无权访问此文件夹中的内容。我只是想禁用目录列表,而不是阻止访问该文件夹中的文件。

【讨论】:

惊讶这已经持续了 2 天,没有人试图回答或评论.. 没有人关心 apache 2.4 ??【参考方案2】:

谢谢!这就是我一直在寻找的东西,而且它有效。

至于你的问题……

两者都有效。我唯一的问题是我不想指定完整的 IP。我宁愿它使用IP的前3个字节:192.168.0.xxx

试试这个:&lt;If "-R '192.168.0.0/24'"&gt;

参考:http://httpd.apache.org/docs/trunk/expr.html

【讨论】:

以上是关于基于 IP 的 Apache 2.4 mod_authz_host 使用 htaccess 启用索引(文件夹视图)的主要内容,如果未能解决你的问题,请参考以下文章

Apache 2.4 重定向直接 IP 访问

apache 2.4 配置httpd:添加域名禁止IP访问网站

在 apache 2.4 中结合子文件夹的 ip 和用户身份验证限制

Apache 构建虚拟web主机 与 日志分隔

apache安装及工作模式

限制对 Apache 2.4 虚拟主机 (WAMP) 的访问