11

多分それがバグかどうかはわかりません。

サーバーに2つのvirutalhostがあります。

virtualhost1.com virtualhost2.com

ポート80でvirtualhost1.comを開いた場合(virtualhost1.com:80)

$_SERVER['HTTP_HOST']='virtualhost1.com';

しかし、virtualhost2.com:80を開くと

$_SERVER['HTTP_HOST']='virtualhost2.com:80'; // NOTE: with port number

理由をお聞かせいただけますか?

4

2 に答える 2

21

の値は、 HTTPリクエストヘッダー$_SERVER['HTTP_HOST']から直接取得されます。Host:要求しているクライアントがそのように入力しているようです。

$_SERVER['SERVER_NAME']その値は仮想ホスト構成から設定されるため、代わりに使用することをお勧めします。ただし、Flimmが以下に示すように、の信頼性でさえSERVER_NAMEサーバー構成に依存する可能性があります(詳細については、この回答を確認してください)。

于 2010-12-21T23:21:46.323 に答える
2

次の関数は常にポートのない実際のホスト(ユーザーが入力したホスト)を返し、ほぼ信頼できます。

function getRealHost(){
   list($realHost,)=explode(':',$_SERVER['HTTP_HOST']);
   return $realHost;
}
于 2016-05-20T13:17:25.420 に答える