Adicione o subdomínio www ao meu Virtualhost Wildcard

2

No meu servidor de desenvolvimento local, configurei sites de teste com o domínio como este projectName.dev

Usando a configuração abaixo no meu arquivo de configuração do Apache ...

NameVirtualHost *:80

<VirtualHost *:80>
   VirtualDocumentRoot  E:/Server/htdocs/projects/%1/www
   ServerAlias *.dev
</VirtualHost>

Isso me permite acessar projectName.dev no navegador e irá carregar os arquivos de E:/Server/htdocs/projects/projectName/www/

Eu gostaria de modificar isso para que eu também possa acessar as mesmas pastas se eu usar o subdomínio www , então, no meu exemplo, projectName.dev e www.projectName.dev carregarão os mesmos arquivos.

Alguém pode me ajudar a fazer isso? Eu não entendo muito bem a documentação

    
por JasonDavis 12.08.2013 / 18:06

2 respostas

2

Você pode tentar o seguinte

NameVirtualHost *:80

<VirtualHost *:80>
   VirtualDocumentRoot  E:/Server/htdocs/projects/%-2/www
   ServerName staging.dev
   ServerAlias *.dev www.*.dev
</VirtualHost>

Você pode usar% -2 para obter sempre o nome "project". % -2 fornece a segunda parte da URL a partir do final. Por exemplo, se o URL fosse link , o docroot seria E: / Server / htdocs / projects / project1 / www

    
por 12.08.2013 / 18:12
1

A resposta ALex_hha está correta, o problema é o% 1 no VirtualDocumentRoot. que é substituído pelo nome do host usado. usar várias variantes curinga e VirtualDocumentRoot é sempre complicado.

Você tem duas soluções:

  1. substitua o% 1 my por um projectName.dev codificado.
    Se você tiver muitos projetos, precisará criar uma configuração de virtualhost para cada projeto, mas apenas para um é uma boa solução alternativa.
  2. crie 2 configurações:

    # www.project.dev format 
    <VirtualHost *:80>
      VirtualDocumentRoot  E:/Server/htdocs/projects/%2+/www
      ServerName www.*.dev
    </VirtualHost>
    
    # project.dev format
    <VirtualHost *:80>
      VirtualDocumentRoot  E:/Server/htdocs/projects/%1/www
      ServerName *.dev
    </VirtualHost>
    

o% 2 + diz que você deseja a segunda e última parte do nome do host recebido. Verifique a página de ajuda do mod_vhost para obter mais informações

Você não está usando um unix, mas no unix você também pode fazer um link simbólico dos nomes www para os nomes dos projetos:

cd /srv/
for i in *; do 
   # bypass if not a directory
   if [ ! -d "$i" ]; then continue; fi
   # bypass if already created
   if [ -e "www.$i" ]; then continue ; fi
   # bypass if already a www
   echo $i | fgrep -q "www" && continue
   ln -s $i www.$i
done

Dessa forma, tanto o nome do projeto quanto o nome do projeto apontam para o mesmo lugar

    
por 12.08.2013 / 20:23