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).
Following function always return real host (user typed host) without port and it's almost reliable:
function getRealHost(){
list($realHost,)=explode(':',$_SERVER['HTTP_HOST']);
return $realHost;
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With