Olá Guilherme,
Primeiramente, verifique se você tem a tag "NameVirtualHost" antes de declarar as sessões "VirtualHost".
Notei apenas dois detalhes na sua configuração:
1) Não está declarando a porta na tag "VirtualHost". O correto é sempre declarar;
2) A tag "ServerAlias" serve apenas quando quer se adicionar alias para o virtual host, e como no teu caso é o mesmo, pode e deve ser removido.
Uma configuração básica seria:
# Declara o IP e porta a ser virtualizado. Isso indica para o Apache que ele deve escutar no
# IP e porta determinado e deve verificar os hosts virtuais equivalentes. Quando se utiliza "*"
# no lugar do IP, indica que todos os IP's locais (interface loopback, ethernet, etc...) devem
# ser utilizados. A porta padrão é 80.
NameVirtualHost *:80
# Agora declaramos o primeiro host virtual. Lembre-se que sempre que nenhum host virtual
# satisfazer a requisição, o primeiro é utilizado. Como parâmetro, informamos qual o IP e
# porta queremos responder para este host virtual. Lembre-se que deve haver uma tag
# NameVirtualHost declarada anteriormente com o mesmo IP e porta.
<VirtualHost *:80>
ServerName
www.guilhermemar.com
DocumentRoot C:\apache\htdocs\guilhermemar\home
<Directory "C:\apache\htdocs\guilhermemar\home">
Options None
AllowOverride AuthConfig Limit
Order allow,deny
Allow from all
</Directory>
ErrorLog C:\apache\logs\www.guilhermemar.com-error_log
CustomLog C:\apache\logs\www.guilhermemar.com-access_log combined
</VirtualHost>
# Agora declaramos o segundo host virtual, no mesmo IP e porta.
<VirtualHost *:80>
ServerName
www.guilhermemar2.com
DocumentRoot C:\apache\htdocs\guilhermemar
<Directory "C:\apache\htdocs\guilhermemar">
Options None
AllowOverride AuthConfig Limit
Order allow,deny
Allow from all
</Directory>
ErrorLog C:\apache\logs\www.guilhermemar2.com-error_log
CustomLog C:\apache\logs\www.guilhermemar2.com-access_log combined
</VirtualHost>
Isto deve resolver teu problema. Para entender um pouco mais sobre como funciona o virtual host, segue uma pequena explicação:
A utilização de hosts virtuais para Apache nasceu da necessidade de "poupar" endereços IP's. Antigamente, para cada site servido era necessário um IP (como é com SSL, mais abaixo explico o porque). Para isso, criou-se o virtual host, fazendo com que o servidor web responda por mais de um site com um único IP. Ele faz isso através da tag de requisição HTTP "Host". Hoje todos os navegadores enviam no mínimo duas linhas de cabeçalho, que é:
MÉTODO /caminho/arquivo.ext[?param1=valor1[¶m2=valor2[...]]] HTTP/1.0 (ou 1.1)
Host:
www.paginarequisitada.comO método mais comum é o GET, seguido pelo POST, utilizado por formulários para enviar um volume maior de informações, visto que o GET envia os dados no cabeçalho, como se fizesse parte do endereço, e o POST envia após este cabeçalho. O GET está limitado a 1024 caracteres. Existem diversos outros métodos, tais como HEAD, DELETE, UPDATE, etc.. mas que são raramente utilizados (não, você não vai conseguir sair por aí removendo páginas com o comando DELETE, ele raramente é habilitado). Cada um tem sua função e alguns habilitam tags extras no cabeçalho de requisição.
Através do que foi informado na tag "Host", o servidor web procura por um virtual host equivalente, verificando seus alias também. O primeiro virtual host equivalente é utilizado, e caso nenhum seja equivalente, o primeiro é utilizado.
Vale lembrar que podemos utilizar máscara na tag "ServerAlias", por exemplo "ServerAlias *.
guilhermemar2.com". Mas temos que tomar cuidado com esta tag, pois se fizermos isso no primeiro virtual host e tivermos outro virtual host com o endereço "
www2.guilhermemar2.com" posterior a este, o primeiro será utilizado, pois o primeiro equivalente é utilizado e o restante não é processado. Podemos utilizar mais de um alias, concatenando os mesmos na mesma tag ServerAlias seguida por todos hosts separados por espaço.
Você pode verificar a configuração processada pelo Apache quanto aos virtual hosts utilizando:
bash# apachectl -t -D DUMP_VHOSTS
VirtualHost configuration:
wildcard NameVirtualHosts and _default_ servers:
*:80 is a NameVirtualHost
default server
www.xxx.com.br (/etc/httpd/extra/httpd-vhosts.conf:27)
port 80 namevhost
www.xxx.com.br (/etc/httpd/extra/httpd-vhosts.conf:27)
port 80 namevhost
www.yyy.com.br (/etc/httpd/extra/httpd-vhosts.conf:90)
Syntax OK
Esta configuração não lista alias, mas sempre que tiver problemas de estar sendo servido por outro virtual host, verifique o que está sendo servido se a tag ServerAlias não está com máscaras ou parâmetros errados.
Quanto ao SSL (mais conhecido por HTTPS) esta função não é possível de ser utilizada. Na verdade é, mas o navegador vai reclamar do certificado. A limitação está no certificado, que contém o endereço do servidor. Quando um cliente conecta em um serviço HTTPS, o servidor antes de receber quaisquer requisição HTTP envia o certificado configurado para aquele site, e depois então o cliente envia a requisição HTTP com a tag Host. Se o host requisitado não for o mesmo do certificado, o navegador vai bloquear e informar ao usuário que ele não está acessando o site que requisitou.
Espero ter esclarecido suas dúvidas, qualquer coisa avisa :)
[]'s
--
Ernani Azevedo