$_SERVER['HTTP_HOST'] contains port number too =/
I don't know maybe it's a bug.
I have 2 virutalhosts on my server.
virtualhost1.com virtualhost2.com
if i open virtualhost1开发者_StackOverflow社区.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;
}
精彩评论