Virtual Hosts work with a Host: field in the header. An URI is syntactically correct in this place, however the semantic is "proxy this". It's mentioned because the protocol for proxies is HTTP too.
Ugh, you're right, I forgot about the Host: header.
ACK the point on semantic indication, too. I stand corrected!
In any case, the IO::All code still needs to be fixed so that it looks for the object after a single slash; and without query params; and it should discard the HTTP version string, too, if it's not doing anything with it.