2012-02-23 136 views
-1

我有負載均衡器後面的Web服務器。它們都具有以下規則來幫助搜索引擎優化(www.example.org指向負載平衡器):如何檢查通過mod_rewrite通過IP訪問的服務器?

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跳過規則。

問:如何檢查丟失或空的主機頭?

回答

1

使用REMOTE_ADDR

這樣的:

RewriteCond %{REMOTE_ADDR} 1.2.3.4 
0

也許可以防止重定向到負載平衡器通過增加另一個條件來檢查不是空%{HTTP_HOST}如下:

RewriteCond %{HTTP_HOST} !^www\.example\.com [NC] 
RewriteCond %{HTTP_HOST} !^$ 
RewriteRule ^/(.*)   http://www.example.org/$1 [L,R=302] 

你的第一個條件有一個「錯誤」,因爲你沒有反斜槓點,它實際上意味着匹配任何字符,即使任何人都不可能在沒有點的情況下到達你的服務器。最後添加[NC],因此條件不區分大小寫。

希望它有幫助。