尝试在仍然运行反向代理CloudFlare(测试时)的同时限制对单个IP的站点访问。使用标准
RewriteEngine On
RewriteCond %{REMOTE_HOST} !32\.231\.45\.342
RewriteRule $ http://www.google.com [R=302,L]
这个没有评论#with cloudflare打开将始终重定向到谷歌,甚至从远程主机IP。
如果我添加所有CloudFlare的IP,那显然无济于事。
我看到的唯一解决方法是存储我想要在数组中访问的任何IP并通过PHP检查它,如果找不到则重定向到其他地方。但是,如果我能逃脱它,我宁愿使用htaccess。想法?
答案 0 :(得分:0)
mod_cloudflare(https://github.com/cloudflare/CloudFlare-Tools)应该将IP修复为正确的IP。
如果它不需要安全,那么您可以像这样使用X-Forwarded-For标头:
RewriteEngine On
# if X-Forwarded-For is set
RewriteCond %{HTTP:X-Forwarded-For} .
RewriteCond %{HTTP:X-Forwarded-For} !32\.231\.45\.342 [OR]
# if X-Forwarded-For isn't set default to remote_host
RewriteCond %{HTTP:X-Forwarded-For} ^$
RewriteCond %{REMOTE_HOST} !32\.231\.45\.342
RewriteRule $ http://www.google.com [R=302,L]
如果他们通过设置自定义X-Forwarded-For知道IP是32.231.45.342,那么人们可能会欺骗它。只有在没有通过cloudflare的情况下才能工作,尽管它应该将X-Forwarded-For标题更改为它自己的标题。