Sim, o ServerAlias funciona exatamente com a variável HTTP_HOST
(mais corretamente, com o cabeçalho Host:
http da solicitação, que também será mapeado para HTTP_HOST
).
Se não houver Host:
http header E o request_uri também contiver um host http (por exemplo, GET http://example.com/path/to HTTP/1.1
), ele também será usado como HTTP_HOST. Isso acontece normalmente no caso de proxies apenas.
Seu exemplo é ruim, Host: não pode conter um URL, apenas um nome de host. Se alguém der aqui uma URL (provavelmente por uma ferramenta http ruim), ela será interpretada como um nome de host inválido / inexistente, e é isso que acontece no seu caso.
Praticamente: Embora possamos encontrar e analisar as partes relevantes do código-fonte (público) do servidor web apache, não acho que essas coisas difíceis sejam necessárias. O melhor que você pode fazer é jogar com seu próprio apache com alguns telnet 127.0.0.1 80
ou comandos similares. Dê diferentes cabeçalhos GET / url, Host: ao seu apache virtualhosted e veja o que acontece. Foi o que fiz com muitas vezes quando precisei depurar as configurações do virtualhosted do apache. Uma minimalexample de consulta http baseada em telnet está aqui:
$ telnet 127.0.0.1 80
GET /test/url.html HTTP/1.1
Host: myapache.mydomain.com
Connection: close
(me: until this you need to type in, don't forget the multiple enter at the end)
200 HTTP/1.1 OK (<- me: from here is coming the reply of the server!)
Content-type: html/html
<html>
...
</html>