I don't know maybe it's a bug.
I have 2 virutalhosts on my server.
virtualhost1.com virtualhost2.com
if i open virtualhost1.com with port 80 (virtualhost1.com:80)
$_SERVER['HTTP_HOST']='virtualhost1.com';
but if i open virtualhost2.com:80
$_SERVER['HTTP_HOST']='virtualhost2.com:80'; // NOTE: with port number
Can I know why?
The value of $_SERVER['HTTP_HOST']
is taken directly from the Host:
HTTP request header. It appears the requesting client is filling it in that way.
I suggest using $_SERVER['SERVER_NAME']
instead as its value will be set from your virtual host config. However, as Flimm notes below, even the reliability of SERVER_NAME
can still be dependent on server config (check out this answer for more info on that).