![Um VirtualHost para determinados URLs, outro VirtualHost para todos os outros URLs no Apache](https://rvso.com/image/623651/Um%20VirtualHost%20para%20determinados%20URLs%2C%20outro%20VirtualHost%20para%20todos%20os%20outros%20URLs%20no%20Apache.png)
É 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 VirtualHost
tag (por exemplo VirtualHost */special-url:80
, ). Em vez disso, quando executo isso, o Apache direciona as solicitações /special-url
para /home/me/server1
. Mas se eu procurar, /foo
ele ainda procurará isso server1
e retornará 404
mesmo se houver um diretório chamado foo
in /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
server1
host 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
AliasMatch
para mapear esse caminho - Você pode usar
mod_rewrite
para 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.