aliases dinâmicos do Apache

3

Eu tenho a configuração LAMP em uma VM que uso em vários projetos. Meu documento root é um / www e eu crio uma pasta para cada projeto dentro dele.

/www/project1-name/
/www/project2-name/

Eu os acesse no meu navegador assim:

http://dev.vm/project-name/

Gostaria de mover meus arquivos de índice e htaccess para uma pasta pública em um projeto, para que eles correspondam à configuração de produção com mais precisão.

/www/project-name/public/

... mas ainda os acessa com o mesmo URL acima. Como posso configurar o Apache para procurar public / folders como raízes de documentos para cada um dos meus projetos?

Nota: Eu entendo que posso criar hosts e entradas vhost para cada projeto para ter seu próprio documento raiz, mas estou tentando evitar isso - porque eu pretendo usar uma configuração semelhante no meu servidor remoto para abrigar vários projetos em um subdomínio chamado 'demo'.

    
por Atticus Finch 28.05.2012 / 19:11

3 respostas

3

Eu daria mais um passo com mod_alias e usaria a diretiva AliasMatch . Deve funcionar da mesma forma que a solução do EightbitTony, mas lhe dá o poder de regex extra.

Eu fiz um pouco de teste e parece que ele deveria fazer isso.

AliasMatch ^/([a-zA-Z0-9_-]+)/(.*) /www/$1/public/$2
    
por 28.05.2012 / 22:48
1

Eu não acho que você queira fazer qualquer reescrita, você não quer apenas algumas declarações de Alias antiquadas?

De link ,

Description: Maps URLs to filesystem locations
Syntax:      Alias URL-path file-path|directory-path
Context:     server config, virtual host
Status:      Base
Module:      mod_alias

Então,

Alias /project-name/  /some/path/to/project-name/public/
Alias /project-name2/ /some/path/to/project-name2/public/
Alias /project-3/     /another/totally/different/path/public/
    
por 28.05.2012 / 19:55
1

Veja a documentação de hospedagem virtual em massa configurada dinamicamente do apache. Não parece que você tenha um grande número de vhosts, então as diretivas VirtualDocumentRoot e de configuração relacionadas provavelmente farão o que você deseja, por exemplo,

 VirtualDocumentRoot /www/%2/public

que seria mapeado para /www/project-name/public . O parâmetro %n é interpolado do URL, com% 0 sendo o todo,% 1 a primeira parte etc.

    
por 28.05.2012 / 21:33