找到答案,见文末
当您托管在集群/云环境(更具体地说是 Rackspace Cloud)中时,如何通过 IP 限制对文件的访问。昨天,我在这里问了一个类似的问题,并收到了以下答案,在我的本地测试环境中效果很好(谢谢)。
<Files test.html>
Order allow,deny
Deny from all
Allow from 123.123.123.123
</Files>
然而,我发现使用 Rackspace Cloud 时,当访问者点击页面时(或者就 .htaccess 而言),IP 已经改变了。
我在测试 .htaccess 指令时发现了这一点,我的真实 IP 不会给我访问权限,但该站点自己的托管 IP 可以工作。
通过其他一些测试,我还发现在他们的云环境中,访问者的 IP 是通过“HTTP_X_FORWARDED_FOR”而不是“REMOTE_ADDR”报告的。
有没有人有一个很好的解决方法/这个?.htaccess 中是否有可以更改 IP .htaccess 查找的指令?
(是的,我将把同样的问题发布到 Rackspace。)
添加了答案
因此,经过几个小时的在线支持后,至少使用 Rackspace Cloud 的指令是这样的:
<Files filename.htm>
SetEnvIf X-Cluster-Client-Ip 000.000.000.000 allowclient
SetEnvIf X-FORWARDED-FOR 000.000.000.000 allowclient
order deny,allow
deny from all
allow from env=allowclient
</Files>
取决于您是否在 SSL 集群后面,您将使用“X-Cluster-Client-Ip”(非 SSL)或“X-FORWARDED-FOR”(SSL)指令来匹配您的 ip .