Definições automáticas do Apache Alias

1

Eu tenho uma pasta cheia de sites: /var/www

Eu tenho um domínio: example.com

Eu quero escrever uma regra no meu httpd.conf que irá configurar um alias para cada site em /var/www .

Por exemplo: /var/www/hello/public pode ser acessado via example.com/hello .

No momento, estou apenas escrevendo minhas definições de alias manualmente, para cada site: Alias /hello "/var/www/hello/public/"

    
por Oliver Joseph Ash 06.03.2012 / 23:20

2 respostas

3

A solução mais fácil seria usar mod_vhost_alias . Não faz exatamente o que você descreveu, mas é muito próximo.

  1. Ative o vhost_alias_module usando qualquer técnica que sua distribuição preferir ( a2enmod vhost_alias em distros baseadas no Debian).
  2. Adicione essas diretivas a httpd.conf :

    UseCanonicalName Off
    VirtualDocumentRoot /var/www/%1/public
    
  3. Crie uma entrada DNS curinga para example.com para que qualquer subdomínio de example.com seja direcionado para seu servidor.

Agora, o acesso a "hello.example.com" carregará o site localizado em /var/www/hello/public .

Como alternativa, como mencionado por Gabor, você pode usar o mod_rewrite . A solução que vou descrever pressupõe que você não tenha outro conteúdo em example.com.

  1. Ative o mod_rewrite usando qualquer mecanismo que sua distro preferir ( a2enmod rewrite em distros baseadas no Debian ).
  2. Adicione essas diretivas ao VirtualHost de example.com:

    RewriteEngine On
    RewriteRule ^([^/]+)(.*) /var/www/$1/public/$2
    

Isso irá reescrever uma solicitação para "example.com/hello/steve" para /var/www/hello/public/steve .

    
por 06.03.2012 / 23:44
0

Crie um vhost para o seu domínio e webroot. Escreva uma regra de regravação em vez de aliasing.

    
por 06.03.2012 / 23:28