Faça o Virtualhost detectar o curinga com e sem www precedente

3

No meu arquivo Apache (Xampp) httpd-vhosts.conf , adicionei este Virtualhost Ele permite que eu use nomes curinga como testserver1.dev e testserver2.dev Eu só tenho que certificar-se de adicionar o nome ao meu arquivo de hosts do Windows.

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

O que eu gostaria de fazer, porém, é adicionar a essa funcionalidade e fazê-la funcionar se o nome começar com www , então testserver1.dev também funcionaria como www.testserver1.dev

Da maneira como ele está atualmente configurado, se eu tentasse acessar esse URL, ele procuraria em uma pasta chamada www.testserver1 em vez da pasta testserver1

    
por JasonDavis 09.09.2012 / 20:09

1 resposta

3

Livre-se do ServerAlias e altere o% 1 para% -2.

<VirtualHost *:80>
  VirtualDocumentRoot  E:/Server/htdocs/projects/%-2/www
</VirtualHost>

Como explicado na seção Interpolação do nome do diretório da documentação do mod_vhost_alias , a %-2 dirá ao Apache para ver o segundo da última parte do nome.

A próxima seção do documento vinculado tem exemplos, um dos quais é o seguinte:

VirtualDocumentRoot "/usr/local/apache/vhosts/%-2.0.%-1.0"

Que permitirá que www.example.com e www.sub.example.com ou example.com veiculem arquivos de /usr/local/apache/vhosts/example.com . Isso é feito da seguinte maneira:

%-2.0  # The second from the last part of the name with a zero-length substring.
       # The .0 is necessary as we need to specify a literal period next and don't
       # want the parser to confuse it with a substring specification.

.      # a literal period

%-1.0  # the last part of the name with a zero-length substring. The .0 should be
       # optional here as there's nothing left to cause confusion, but it doesn't
       # hurt anything to have it.
    
por 25.09.2012 / 06:37