重複の可能性:
HTTP_HOST と SERVER_NAME
$_SERVER['HTTP_HOST']
と$_SERVER['SERVER_NAME']
??はどう違いますか?
$_SERVER['SERVER_NAME']
ホスト構成で定義されているサーバー名の値を指定します (つまり、Apache の場合は Apache .conf ファイル)。
$_SERVER['HTTP_HOST']
現在のリクエストが満たされているドメイン名を提供し、リクエストに直接関連しています。
HTTP_HOST
通常、リクエストに直接関連するという点で、ほとんどのアプリケーションでより便利ですがSERVER_NAME
、conf ファイルにある値を返すことができ、リクエストについては何も教えてくれません。
HTTP_HOST
とどのように異なるかの例を示しますSERVER_NAME
。の ServerNamedomain.com
と の IP アドレスを持つ Apache で定義されたホストがあるとします1.2.3.4
。
2 つの着信要求 URL を見て、これらの変数の違いを示します。
http://www.domain.com
HTTP_HOST = www.domain.com
SERVER_NAME = domain.com
http://1.2.3.4
HTTP_HOST = 1.2.3.4
SERVER_NAME = domain.com
繰り返しますが、HTTP_HOST はリクエストにより多く結び付けられていますが、SERVER_NAME はサーバー構成によって決定されます。
HTTP_HOST
Host:
クライアントから送信されたヘッダーです。その結果、信頼性が少し低下する可能性があります。 ユーザー入力に関係なく、SERVER_NAME
サーバーの構成によって決まります。
挙動の違いは微妙です。ここにいくつかの良い例が示されています: http://shiflett.org/blog/2006/mar/server-name-versus-http-host
'SERVER_NAME' 現在のスクリプトが実行されているサーバー ホストの名前。スクリプトが仮想ホストで実行されている場合、これはその仮想ホストに対して定義された値になります。
'HTTP_HOST' 現在のリクエストの Host: ヘッダーの内容 (存在する場合)。
HTTP_HOST
現在のリクエストの Host: ヘッダーの内容 (存在する場合)。
SERVER_NAME
現在のスクリプトが実行されているサーバー ホストの名前。スクリプトが仮想ホストで実行されている場合、これはその仮想ホストに対して定義された値になります。