Apache HTTP 服务器:如何将对目录列表的访问限制在某些 ip 范围内?
Apache HTTP Server: How to restrict access to directory listings to some ip ranges?
在 Apache HTTP Server 2.4 中:如何将对目录列表的访问限制在某些 IP 范围内?文件应该仍然可以通过 URL 公开下载,但目录列表应该受到限制。
这可以通过 <If>
Expression 实现。
这是你的 vhost/conf:
<VirtualHost *:80>
DocumentRoot /var/www/html
Options -Indexes # disable listing
<If "%{REMOTE_ADDR} == '10.0.0.5'">
Options +Indexes # enable listing if ip matches
</If>
</VirtualHost>
<Directory /var/www/html>
Require all granted
</Directory>
使用 Ubuntu 服务器和 Windows 使用 Apache 2.4 对其进行了测试 – 遗憾的是,这不适用于旧的 Apache 版本。
对于 IP 范围,可以使用另一种方法来检查 IP:
<If "%{REMOTE_ADDR} -ipmatch '10.0.0.0/8'">
或更快的方法是 -R
:
<If "-R '192.168.0.0/16' || -R '10.0.248.0/24'">
在 Apache HTTP Server 2.4 中:如何将对目录列表的访问限制在某些 IP 范围内?文件应该仍然可以通过 URL 公开下载,但目录列表应该受到限制。
这可以通过 <If>
Expression 实现。
这是你的 vhost/conf:
<VirtualHost *:80>
DocumentRoot /var/www/html
Options -Indexes # disable listing
<If "%{REMOTE_ADDR} == '10.0.0.5'">
Options +Indexes # enable listing if ip matches
</If>
</VirtualHost>
<Directory /var/www/html>
Require all granted
</Directory>
使用 Ubuntu 服务器和 Windows 使用 Apache 2.4 对其进行了测试 – 遗憾的是,这不适用于旧的 Apache 版本。
对于 IP 范围,可以使用另一种方法来检查 IP:
<If "%{REMOTE_ADDR} -ipmatch '10.0.0.0/8'">
或更快的方法是 -R
:
<If "-R '192.168.0.0/16' || -R '10.0.248.0/24'">