DirectoryIndex condicional com base no endereço IP, usando .htaccess

2

Eu tenho isso em httpd.conf :

<VirtualHost xx.xxx.xx.xxx>
    Options All +ExecCGI
    ServerAdmin [email protected]
    DocumentRoot /var/www/html/domain.com
    ServerName  dl.domain.org
    DirectoryIndex dlindex1.html
</VirtualHost>

... o que é bom (o que eu preciso como DirectoryIndex para o nosso subdomínio 'dl.domain.org'), mas agora eu também preciso alterar esse DirectoryIndex baseado em Endereço IP, usando .htaccess . Isso é possível?

As postagens do StackOverflow estão me dizendo que não consigo definir DirectoryIndex condicionalmente ... mas, em vez disso, têm para usar RewriteRule . Se isso for verdade, OK, mas qual RewriteCond e RewriteRule ? Eu tentei muitas coisas, incluindo (onde os IPs reais são aqueles dos nossos 2 desenvolvedores):

RewriteCond %{REMOTE_ADDR} ^111\.222\.333\.444$    [OR]
RewriteCond %{REMOTE_ADDR} ^555\.666\.777\.888$
RewriteCond %{SERVER_NAME} ^dl.domain.org
RewriteRule ^(.*)/$ $1/dlindex2.html

.. ou mesmo apenas (como um teste absoluto):

RewriteCond %{REMOTE_ADDR} ^555\.666\.777\.888$
RewriteRule (.*)/dlindex1.html$ $1/dlindex2.html

Mas parece que o que eu tentei apenas serve o DirectoryIndex dlindex1.html como por httpd.conf , ao contrário do dlindex2.html que eu quero que seja servido como a página padrão nesse subdomínio quando um devs IP está chamando. / p>

Alguém pode me apontar para o que eu posso fazer para conseguir o que eu sou depois? isto é: ... para de fato, ou mesmo apenas efetivamente, alterar DirectoryIndex com base no endereço IP, usando .htaccess on the fly?

    
por govinda 27.07.2012 / 18:19

1 resposta

1

Supondo que queremos que o endereço IP 12.34.56.78 vá para / var / www / client1 / * e queremos que o endereço IP 87.65.43.21 vá para / var / www / client2 / *

RewriteEngine On
RewriteCond %{REMOTE_ADDR} ^12\.34\.56\.78$
RewriteRule (.*) /client1/$1

RewriteCond %{REMOTE_ADDR} ^87\.65\.43\.21$
RewriteRule (.*) /client2/$1

Crie um conjunto de "RewriteCond" e "RewriteRule" para cada IP para o qual você precisa atender uma página especial.

Falha na operação:

  1. O cliente 87.65.43.21 conecta
  2. A regra verifica se o cliente é 12.34.56.78, não é
  3. O servidor passa então para a segunda condição
  4. Verifica se o cliente é 87.65.43.21, é
  5. O servidor agora executa o RewriteRule que faz parte da condicional que passou no teste, e a página / client2 / (file_requested) é exibida.

O OP esclareceu sua pergunta, ele não precisa de pastas separadas, mas diferentes páginas de índice a serem exibidas, aqui está um exemplo de .htaccess para esse trabalho:

RewriteEngine On
RewriteCond %{REMOTE_ADDR} ^12\.34\.56\.78$
RewriteCond %{REQUEST_URI} index\.html$
RewriteRule .* /index-page-client1.html

RewriteCond %{REMOTE_ADDR} ^12\.34\.56\.78$
RewriteCond %{REQUEST_URI} index\.html$
RewriteRule .* /index-page-client2.html

A regra acima também verificará se o arquivo solicitado é / was "index.html", suponho que você queira apenas redirecionar solicitações para "index.html"

    
por 27.07.2012 / 19:27