Apache: DocumentRoot baseado em IP do cliente

5

Eu não sei se isso poderia ser possível no apache ainda, eu fiz uma boa quantidade de pesquisa antes de vir aqui. mas:

Eu tenho um VirtualHost rodando em **: 80 *, ServerName para somedomain.tld. O que eu quero alcançar é se o cliente 10.2.1.4 acessa o somedomain.tld, o cliente receberá o conteúdo do DocumentRoot / var / www / pages-1 /. Então, se 10.3.0. * Acessar o mesmo somedomain.tld, o cliente receberá o conteúdo do DocumentRoot / var / www / pages-2 /. Existe alguma maneira de conseguir isso atualmente?

    
por Seth Jeremi Malaki 01.12.2011 / 12:05

2 respostas

6

Você pode fazer isso com um RewriteRule precedido por um RewriteCond que verifica o remote_addr (lembre-se de usar% para o vars, não $:

<VirtualHost *:80>
  Servername somedomain.tld

  RewriteEngine On
  RewriteCond %{REMOTE_ADDR} 10.2.1.4
  RewriteRule ^(.*)$ /var/www/pages-1/$1

  RewriteCond %{REMOTE_ADDR} 10.3.0.
  RewriteRule ^(.*)$ /var/www/pages-2/$1

</VirtualHost>
    
por 01.12.2011 / 13:10
3

Não será possível alterar a raiz do documento, mas você pode reescrever a URL com base no IP do cliente, algo como ... (não testado) ...

RewriteCond %{REMOTE_HOST} ^10\.3\.0\.
RewriteRule ^/(.*) /pages-2/$1 [P,L]

RewriteCond %{REMOTE_HOST} ^10\.2\.1\.4$
RewriteRule ^/(.*) /pages-1/$1 [P,L]

Embora seja mais simples usar um programa de reescrita externa se o número de Endereços IP são muito grandes.

    
por 01.12.2011 / 13:06