Reescrevendo o URL inteiro usando mod_rewrite

2

Eu sei como usar o mod_rewrite do Apache de uma forma comum, mas agora estou tentando usá-lo de uma maneira diferente, que não foi um sucesso até o momento. Aqui está o que eu escrevi:

RewriteEngine on
RewriteMap lowercase int:tolower
RewriteCond %{lowercase:%{HTTP_HOST}} ^([^.]+)\.internal$
RewriteRule ^(.*)$ http://%1.local$1

E aqui está a história toda:

Eu adicionei duas linhas ao meu arquivo hosts da seguinte forma:

127.0.0.1    test.local
127.0.0.1    test.internal

Eu também adicionei um host virtual para test.local no meu Apache e criei um arquivo para que a URL http://test.local/info.php imprimisse a configuração e outras coisas do PHP. Agora vamos voltar para as diretivas do mod_rewrite; Eu estava esperando, escrevendo o que escrevi no início do post, quando eu abrir o URL http://test.internal/info.php , ele será servido pelo script test.local/info.php . Alguém pode me dizer o que eu fiz de errado?

BTW, eu escrevi as diretivas fornecidas no arquivo de configuração principal do Apache, não em um host virtual e eu insisto nisso.

[UPDATE]

Adicionei as duas linhas seguintes ao arquivo de configuração do Apache para poder depurar o comportamento de Rewrite :

RewriteLog "/tmp/rewrite.log"
RewriteLogLevel 9

Eu tenho alguns hosts virtuais nesta máquina que usam Rewrite e quando os visito, devido a essas duas linhas, um arquivo de log é criado no caminho especificado. Mas quando eu visito http://test.internal/info.php nenhum arquivo de log é criado.

[UPDATE]

Vou esclarecer meu objetivo, talvez eu esteja fazendo tudo errado do zero.

Eu tenho vários VPSs hospedando um site diferente. E todos eles residem em uma rede local e eu quero adicionar um frontend a essa coleção de sites para que eles possam ser acessados pela Internet. Mas a questão é que os membros dessa coleção são adicionados ou removidos dinamicamente, portanto, não quero modificar meu DSN e / ou o arquivo de configuração do servidor proxy reverso toda vez que algo é alterado. Eu posso usar um curinga no servidor DNS para direcionar todas as solicitações para um domínio específico para o frontend (o servidor proxy reverso) e então será até o frontend para redirecionar a solicitação para o VPS apropriado usando seu subdomínio (cada subdomínio é atribuído a um VPS logicamente). Para esse fim, configurarei um DNS local mapeando alguns nomes de domínio fictícios para IPs de VPS internos. Tudo o que resta é que o servidor proxy reverso deve reescrever o URL do pedido para que ele corresponda aos domínios fictícios.

A única parte desta solução que não consigo entender é como dizer ao Apache para mapear o domínio das requisições recebidas para as dummy!

Alguma sugestão?

    
por Mehran 07.08.2013 / 14:40

1 resposta

0

Encontrei outra maneira de resolver o meu problema, chamado mod_proxy_express e está disponível no Apache 2.4. É capaz de mapear um grande número de domínios para seus IPs usando um banco de dados.

    
por 09.08.2013 / 15:03