$_SERVER['HTTP_HOST'] contains port number too =/

dynamic picture dynamic · Dec 22, 2010 · Viewed 13.9k times · Source

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?

Answer

webbiedave picture webbiedave · Dec 22, 2010

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).