Как проверить, доступен ли сервер по IP с помощью mod_rewrite? - PullRequest
0 голосов
/ 23 февраля 2012

У меня есть веб-серверы за балансировщиком нагрузки.У всех них есть следующее правило, помогающее в 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 пропускает правило.

Q:Как я могу проверить наличие отсутствующего или пустого заголовка узла?

Ответы [ 2 ]

1 голос
/ 23 февраля 2012

использовать REMOTE_ADDR.

как это:

RewriteCond %{REMOTE_ADDR} 1.2.3.4
0 голосов
/ 23 февраля 2012

Может быть, вы можете предотвратить перенаправление на балансировщик нагрузки, добавив еще одно условие для проверки наличия не пустых% {HTTP_HOST}, как показано ниже:

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

В вашем первом условии "ошибка", как вы не• ставить обратную косую черту, это означает совпадение с любым символом, даже если маловероятно, что кто-либо сможет добраться до вашего сервера без точки.В конце добавляется [NC], поэтому условие нечувствительно к регистру.

Надеюсь, это поможет.

...