Envie um único endereço IP para uma página específica usando mod_rewrite

1

O Apache no nosso CentOS VDS está sendo monitorado pela empresa de hospedagem (devido a problemas anteriores em um servidor de hospedagem compartilhada). O site que eles estão monitorando é uma loja on-line e isso tem o efeito colateral bastante desagradável de fazer parecer que há inúmeros visitantes on-line a qualquer momento. Ele também preenche os registros da loja com entradas irrelevantes. Nada disso é crítico, mas eu gostaria de eliminar esses problemas.

Estou tentando usar comandos mod_rewrite no arquivo .htaccess para redirecionar esse endereço IP para uma página fictícia, em vez de permitir que ele entre na loja. Googling produz muitos exemplos, mas eles são todos para solicitações de uma página específica, enquanto no meu caso nenhuma página está sendo solicitada.

Aqui está o que eu acabei fazendo (192.168.0.23 sendo meu cliente de teste) mas isso apenas resulta em um loop:

RewriteCond %{REMOTE_HOST} 192\.168\.0\.23
RewriteRule .* /monitor.html [R=301,L]

Este exemplo está sendo testado no meu servidor dev usando wget (usando o endereço IP ou o nome do domínio) e resulta nisso:

H:\>wget http://192.168.0.18
--2011-09-26 09:01:07--  http://192.168.0.18/monitor.html
Connecting to 192.168.0.18:80... connected.

a resposta é repetida até

--2011-09-26 09:01:07--  http://192.168.0.18/monitor.html
Connecting to 192.168.0.18:80... connected.
HTTP request sent, awaiting response... 301 Moved Permanently
Location: http://192.168.0.18/monitor.html [following]
20 redirections exceeded.

É o que estou tentando fazer usando o mod_rewrite ou devo abordar isso de outra maneira?

tl; dr:

  • Preciso redirecionar qualquer solicitação de um endereço IP específico para uma página fictícia
  • A resposta deve vir do servidor da web, pois é isso que está sendo monitorado

Editar

Aqui está o conteúdo de rewrite_log depois de realizar outro wget http://192.168.0.18

192.168.0.23 - - [21/Sep/2011:21:27:07 +1000] [192.168.0.18/sid#937eab8][rid#95330f8/initial] (2) [perdir /path/to/website/files/] explicitly forcing redirect with http://192.168.0.18/monitor.html
192.168.0.23 - - [21/Sep/2011:21:27:07 +1000] [192.168.0.18/sid#937eab8][rid#95330f8/initial] (1) [perdir /path/to/website/files/] escaping http://192.168.0.18/monitor.html for redirect
192.168.0.23 - - [21/Sep/2011:21:27:07 +1000] [192.168.0.18/sid#937eab8][rid#95330f8/initial] (1) [perdir /path/to/website/files/] redirect to http://192.168.0.18/monitor.html [REDIRECT/301]
192.168.0.23 - - [21/Sep/2011:21:27:07 +1000] [192.168.0.18/sid#937eab8][rid#9535100/initial] (3) [perdir /path/to/website/files/] strip per-dir prefix: /path/to/website/files/monitor.html -> monitor.html
192.168.0.23 - - [21/Sep/2011:21:27:07 +1000] [192.168.0.18/sid#937eab8][rid#9535100/initial] (3) [perdir /path/to/website/files/] applying pattern '^/monitor\.html$' to uri 'monitor.html'
192.168.0.23 - - [21/Sep/2011:21:27:07 +1000] [192.168.0.18/sid#937eab8][rid#9535100/initial] (4) [perdir /path/to/website/files/] RewriteCond: input='192.168.0.23' pattern='192\.168\.0\.23' => matched
192.168.0.23 - - [21/Sep/2011:21:27:07 +1000] [192.168.0.18/sid#937eab8][rid#9535100/initial] (2) [perdir /path/to/website/files/] rewrite 'monitor.html' -> '/monitor.html'
192.168.0.23 - - [21/Sep/2011:21:27:07 +1000] [192.168.0.18/sid#937eab8][rid#9535100/initial] (2) [perdir /path/to/website/files/] explicitly forcing redirect with http://192.168.0.18/monitor.html
192.168.0.23 - - [21/Sep/2011:21:27:07 +1000] [192.168.0.18/sid#937eab8][rid#9535100/initial] (1) [perdir /path/to/website/files/] escaping http://192.168.0.18/monitor.html for redirect
192.168.0.23 - - [21/Sep/2011:21:27:07 +1000] [192.168.0.18/sid#937eab8][rid#9535100/initial] (1) [perdir /path/to/website/files/] redirect to http://192.168.0.18/monitor.html [REDIRECT/301]

Espero que alguém consiga entender. Tanto quanto eu posso dizer que pensa monitor.html < > monitor.html .

    
por John Gardeniers 26.09.2011 / 02:11

2 respostas

3
RewriteEngine On
RewriteCond %{REMOTE_ADDR} 192\.168\.0\.23
RewriteCond %{REQUEST_URI} !/monitor\.html$
RewriteRule $ /monitor.html [R=301,L]

~

    
por 26.09.2011 / 03:56
2

Apenas não redirecione quando a página solicitada for a página de monitoramento:

RewriteCond %{REMOTE_HOST} ^192\.168\.0\.23$
RewriteRule !^monitor\.html$ /monitor.html [R=301,L]

(editado para .htaccess contexto e correspondência exata de IP do host)

    
por 26.09.2011 / 02:22