Como alterar a raiz do documento com base na URL

1

Estou usando o httpd-2.2.3-22 no RHEL 5.3.

Como posso redirecionar para diferentes origens de documentos no Linux com base na URL.

Exemplo:

A raiz do documento para testdomain.com é /var/www/vhost/testdomain.com/httpdocs

Se o URL for link , ele deve apontar a raiz do documento para /var/www/vhost/testdomain.com/httpdocs/web1.

Se o URL for link , ele deve apontar a raiz do documento para /var/www/vhost/testdomain.com/httpdocs/web2.

Em que web1 e web2 são as duas pastas diferentes sob a raiz do documento pai.

Por favor, deixe-me saber como configurar o apache nesta situação?

Atenciosamente

Supratik

    
por Supratik 21.08.2010 / 12:59

3 respostas

3

Parece que você está procurando por hosts virtuais dinâmicos. Existe um artigo muito bom na documentação do Apache sobre isso:

Hospedagem virtual em massa dinamicamente configurada

Existem várias maneiras de fazer isso, mas o mais flexível é provavelmente o mod_rewrite. Com base no seu exemplo, você pode usar a seguinte configuração de host virtual:

<VirtualHost *>
        ServerName testdomain.com
        ServerAlias *.testdomain.com

        RewriteEngine on

        RewriteMap lowercase int:tolower

        # check the hostname is right so that the RewriteRule works
        RewriteCond ${lowercase:%{SERVER_NAME}} ^[a-z0-9-]+\.testdomain\.com$

        # concatenate the virtual host name onto the start of the URI
        # the [C] means do the next rewrite on the result of this one
        RewriteRule ^(.+) ${lowercase:%{SERVER_NAME}}$1 [C]

        # now create the real file name
        RewriteRule ^([a-z0-9-]+)\.testdomain\.com/(.*) /var/www/vhost/testdomain.com/httpdocs/$1/$2
</VirtualHost>
    
por 26.01.2012 / 06:29
2

Você precisa configurar hosts virtuais para o seu servidor. Deve haver arquivos de configuração em / etc / httpd / conf no RHEL (talvez / etc / apache2 se você tiver uma versão customizada). Abra o httpd.conf e edite a parte dos hosts virtuais, perto da parte inferior.

Por exemplo, você poderia inserir no arquivo (retirado do link abaixo)

Listen 80

NameVirtualHost *:80

<VirtualHost *:80>
  DocumentRoot /var/www/vhost/testdomain.com/httpdocs/web1
  ServerName web1.testdomain.com
</VirtualHost>

<VirtualHost *:80>
  DocumentRoot /var/www/vhost/testdomain.com/httpdocs/web2
  ServerName web2.testdomain.com
</VirtualHost>

Se o Apache estiver escutando na porta 80 (http, padrão). Então você precisa reiniciar o Apache (/etc/init.d/httpd restart OU "apache2 restart")

Por favor, dê uma olhada nos hosts virtuais Apache

Re: não é possível adicionar hosts virtuais

Se você não puder adicionar hosts virtuais, é improvável que você possa alterar mais as configurações do apache e do sistema. As únicas soluções que vejo são

  • Use diretamente o link (web2)

  • Se você não se importar em usar outra porta (ou seja, não 80), poderá instalar o nginx, que é bastante simples de configurar, e aceitará um arquivo de configuração personalizado, configurando-o para aceitar conexões da porta 5000, por exemplo. por exemplo, link ), desde que

      O
    1. firewall do RHEL aceita conexões TCP da porta 5000.
    2. se você estiver por trás de um roteador / firewall, a porta 5000 será aceita e roteada para esse servidor da web
    3. que web1 / web2 são resolvidos via DNS, o que significa que os subdomínios são declarados e o IP é definido para esse servidor da web (ou roteador ...)
  • hospeda os arquivos de documento em outro servidor da web e atualiza o DNS para testdomain.com ter os subdomínios web1 / 2 resolvidos para o novo endereço IP do servidor web

por 21.08.2010 / 13:15
0

Crie dois hosts virtuais , cada um com seu próprio DocumentRoot .

    
por 21.08.2010 / 13:05