我在负载均衡器后面有Web服务器。他们都有以下规则来帮助SEO(www.example.org指向负载均衡器):
RewriteCond %{HTTP_HOST} !www.example.org
RewriteRule ^/(.*) http://www.example.org/$1 [L,R=302]
我希望能够通过IP直接访问这些服务器,在这种情况下,不能应用上述规则,否则人们将被重定向到负载均衡器。我尝试了以下条件:
RewriteCond %{HTTP_HOST} 1.2.3.4
RewriteRule (.*) $1 [L]
问题是,当通过IP访问时,%{HTTP_HOST}
未设置,mod_rewrite
会跳过该规则。
问:如何检查丢失或空的主机标头?
答案 0 :(得分:1)
使用REMOTE_ADDR
。
RewriteCond %{REMOTE_ADDR} 1.2.3.4
答案 1 :(得分:0)
也许您可以通过添加另一个条件来检查不是空的%{HTTP_HOST}来阻止重定向到负载均衡器,如下所示:
RewriteCond %{HTTP_HOST} !^www\.example\.com [NC]
RewriteCond %{HTTP_HOST} !^$
RewriteRule ^/(.*) http://www.example.org/$1 [L,R=302]
你的第一个条件有一个“错误”,因为你没有反斜杠,它实际上意味着匹配任何角色,即使任何人都不可能在没有点的情况下到达你的服务器。最后添加[NC],因此条件不区分大小写。
希望它有所帮助。