开发者

$_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;
}
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜