![Apache 目录列表仅针对特定 IP?](https://linux22.com/image/519534/Apache%20%E7%9B%AE%E5%BD%95%E5%88%97%E8%A1%A8%E4%BB%85%E9%92%88%E5%AF%B9%E7%89%B9%E5%AE%9A%20IP%EF%BC%9F.png)
我如何才能Indexes
仅为特定 IP 地址启用?
一般来说,我希望禁用目录列表,但只对特定 IP 启用
答案1
<Directory /path/to/your/dir>
Options indexes
order deny,allow
deny from all
allow from 192.168.1.101
</Directory>
如果这不能达到你想要的效果(因为除了指定的 IP 之外,任何人都无法访问目录中的任何内容),你可以使用 mod_rewrite 执行一些操作,以实现为特定 IP 启用索引的功能:
RewriteEngine on
RewriteCond %{REMOTE_ADDR} !^192\.168\.1\.101
RewriteRule ^/(index\.html)?$ /page_to_kick_people_looking_for_indexes_to.html [L]
答案2
使用 Apache 2 中的 mod_authz_host(或 Apache 1 中的 mod_access),您可以通过 IP 地址(或 IP 地址范围)限制对目录的访问控制。
例如:
<Directory "/path/to/directory/">
Order allow,deny
Allow from XXX.XXX.XXX.XXX
Options Indexes
</Directory>
有关更多信息,请参阅 Apache 页面mod_authz_host。
答案3
如果您创建 2 个<Directory />
条目,则可以显示特定 IP 或范围的索引并禁用所有其他的索引,如下所示:
<Directory "/path/to/directory">
Order deny,allow
Allow from all
Options -Indexes
</Directory>
<Directory "/path/to/directory">
Order allow,deny
Allow from 192.168.1.101
Options +Indexes
</Directory>
编辑:
我现在看到这也会禁用对单个文件的访问,因此仍然只能从一个 IP/范围访问