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 theHost: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 ofSERVER_NAMEcan still be dependent on server config (check out this answer for more info on that).