使用带CloudFlare的htaccess设置302重定向?

时间:2011-06-10 22:16:53

标签: .htaccess mod-rewrite reverse-proxy

尝试在仍然运行反向代理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。想法?

1 个答案:

答案 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标题更改为它自己的标题。