在AWS论坛上已经问过这个问题,答案是设置一个默认虚拟主机,该虚拟主机处理裸IP地址上的流量并且不执行任何重定向。这意味着打您IP地址的普通用户也不会被重定向。
您也可以通过添加另一个RewriteCond,指定希望ELB请求的URL的路径部分,并忽略该路径:
RewriteCond %{HTTP_HOST} !^www\.example\.com$ [NC]
RewriteCond %{REQUEST_URI} !^/health-check$
RewriteRule ^ http://www.example.com/$1 [R=301,L]
命中该URL的普通用户将不会被重定向。
您也可以使用相同的技术来检测ELB的用户代理。
RewriteCond %{HTTP_HOST} !^www\.example\.com$ [NC]
RewriteCond %{HTTP_USER_AGENT} !^ELB-HealthChecker
RewriteRule ^ http://www.example.com/$1 [R=301,L]
欺骗其User-Agent的普通用户将不会被重定向。
或ELB的内部IP地址。
RewriteCond %{HTTP_HOST} !^www\.example\.com$ [NC]
RewriteCond %{REMOTE_ADDR} !^10\.
RewriteRule ^ http://www.example.com/$1 [R=301,L]
为了使此选项起作用,您将需要mod_rpaf
(对于Apache 2.2)或mod_remoteip
(对于Apache 2.4)修改REMOTE_ADDR
变量以包含X-Forwarded-For
标头内容的正确部分。只要正确设置,普通用户就不可能避免重定向响应。