Um VirtualHost para determinados URLs, outro VirtualHost para todos os outros URLs no Apache

Um VirtualHost para determinados URLs, outro VirtualHost para todos os outros URLs no Apache

É possível configurar o Apache para ter diferentes hosts virtuais escutando no mesmo endereço IP, mesma porta, de modo que certos caminhos (não o domínio completo, apenas o caminho local) direcionem para um host virtual e outros serão padronizados para o outro ?

Por exemplo:

#All requests to www.mysite.com/special-url go here

<VirtualHost /special-url:80>
  DefaultType application/x-httpd-php
  ServerName server1
  Document Root "/home/me/server1"
  <Directory "/home/me/server1">
    AllowOverride None
    Order allow, deny
    allow from all
  </Directory>
</VirtualHost>

#All other requests go here

<VirtualHost *:80>
  DefaultType application/x-httpd-php
  ServerName server1
  Document Root "/home/me/server2"
  <Directory "/home/me/server2">
    AllowOverride None
    Order allow, deny
    allow from all
  </Directory>
</VirtualHost>

Esta configuração do servidor não funciona, nem adicionar combinações de curingas à primeira VirtualHosttag (por exemplo VirtualHost */special-url:80, ). Em vez disso, quando executo isso, o Apache direciona as solicitações /special-urlpara /home/me/server1. Mas se eu procurar, /fooele ainda procurará isso server1e retornará 404mesmo se houver um diretório chamado fooin /home/me/server2.

Existe alguma maneira de ter um VirtualHost apenas para determinados URLs e outro VirtualHost para todos os outros URLs?

Responder1

Não é assim que funciona. Um host virtual é baseado no endereço IP ou no nome do host, não no caminho. Mas existem algumas outras coisas que você pode fazer para atingir o mesmo objetivo:

  • Se o server1host virtual tiver um nome de host separado, você poderá ter um redirecionamento
  • Se tudo o que você deseja é veicular conteúdo de um caminho diferente para esse URL, você pode usar um AliasMatchpara mapear esse caminho
  • Você pode usar mod_rewritepara reescrever o URL de acordo com sua especificação

Não posso ser mais específico do que isso sem saber mais sobre o que exatamente você deseja alcançar. Mas eu acreditoa documentação do Apache sobre mapeamento de URLs para sistema de arquivoslhe dará um bom ponto de partida.

Responder2

Parece que isso poderia ser um trabalho para o módulo proxy do Apache.

Confira a diretiva ProxyPass:

http://httpd.apache.org/docs/2.2/mod/mod_proxy.html#proxypass

Responder3

Virtualhosts servem para lidar com a parte do domínio da solicitação para que você possa hospedar vários domínios no mesmo servidor.

você poderia fazer algo com um alias ou reescrever. ou você pode criar URLs diferentes em seu aplicativo e deixá-lo lidar com isso.

informação relacionada