Qual é a maneira correta de criar diretórios virtuais no Apache sem usar links simbólicos?

1

Estou vindo do IIS e a configuração de diretórios virtuais é muito agradável. Você apenas clica com o botão direito do mouse e adiciona um "diretório virtual" apontando para qualquer caminho que desejar. Esse caminho relativo é refletido pelo navegador ao visualizar o site.

Como faço o mesmo com o Apache? Symlinks me assusta porque deletar cascatas. Existe uma maneira melhor de criar diretórios virtuais no Apache? Eu estou usando o MAMP para Mac, que usa o apache2.

    
por TruMan1 04.12.2011 / 16:10

3 respostas

4

Use a diretiva Alias no arquivo de configuração do Apache.

Alias /virtual-dir /var/www/foo

Além disso, rm -r não atravessa links simbólicos e não passa em cascata.

    
por 04.12.2011 / 16:17
0

Se você apontar vários domínios para o mesmo diretório html público e o conteúdo real residir fora do html público (web root), você poderá fazer isso em duas etapas:

1) reescreva o diretório por domínio, por exemplo

<VirtualHost 127.0.0.1:80>
  ServerName host_one.ca
   RewriteEngine On
    RewriteRule "/?images(.*)" "/www/shared/host_one/images/$1" [NC]
</VirtualHost>
<VirtualHost 127.0.0.1:80>
  ServerName host_two.ca
   RewriteEngine On
    RewriteRule "/?images(.*)" "/www/shared/host_two/images/$1"
</VirtualHost>

2) Em seguida, adicione links simbólicos (alternativamente, o Alias)

ln -s /shared/host_one/images /www/html/images/host_one
ln -s /shared/host_two/images /www/html/images/host_two

Apenas tenha cuidado. host_two imagens podem ser acessadas via host_one:  domain_one.ca/images/host_two/{filename}

A menos que você adicione regras adicionais que qualquer coisa que NÃO esteja no diretório do host atual será removida. Para o host_one VirtualHost (eu fiz não confirme se esta regra funciona):

    # prevent showing content from other hosts
    RewriteRule "/?images/!(host_one/.*)" /404 [NC,L]
    
por 15.09.2016 / 01:14
0

Se é um servidor seguro, o diretório 'Alias' precisa ir na configuração do VirtualHost 443 também

<VirtualHost *:443>
...
Alias /virtual-dir /var/www/foo
</VirtualHost>
    
por 18.09.2017 / 17:08