• ベストアンサー

$_SERVER["HTTP_HOST"]と$_SERVER["SERVER_NAME"]の違い(というか意味合い)は?

phpのバージョンは、5.1.6で、OSのバージョンはCentOS4.4です。 お聞きしたいのですが、 $_SERVER["HTTP_HOST"]と$_SERVER["SERVER_NAME"]の違い(というか意味合い)はなんでしょうか? phpinfoでみても、同じの場合したことがみたことがないもので。 ご存じの方いらっしゃいましたら、お教えいただければ幸いです。 よろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

$_SERVERはサーバーの環境変数やPHPの情報を保存した配列です。 $_SERVERのうち、環境変数はgetenv()でも取得できます。 $_SERVER["SERVER_NAME"]で取得できる名前は Apacheの場合はhttpd.confで、 UseCanonicalNameがOnになっているときに、ServerNameで指定された値が使われます。 UseCanonicalNameがOffになっていると、ドメイン名やIPアドレスになります。 UseCanonicalNameがOffになっていて、http://127.0.0.1:8001/のようにポート指定でアクセスした場合は、ポート番号は除かれます。 HTTP_HOSTはHTTPでアクセスしたときのホスト名、つまりドメイン名+ポート番号がそれに当たります。 (厳密には違うかも知れませんが、、、) http://www.ietf.org/rfc/rfc2616.txt VirtualHostを使ってポート指定でアクセスすると違いが出ますが、 デフォルトでUseCanonicalNameはOffになっていますし、ホスティングサービスではOnにする理由もありません。 http://httpd.apache.org/docs/2.0/ja/mod/core.html#usecanonicalname (「これが有用な場合の例は、」の段落参照。主にイントラネット向け?) 、、、と書くのはいいとして、私自身、UseCanonicalNameやホスト名の意味や使い方をわかっていません。 こうすれば違いが出るということだけですが、 ご参考まで。

すると、全ての回答が全文表示されます。

その他の回答 (1)

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

$_SERVERとはhttpサーバーの環境変数です なのでPHPは直接は関係ありません。 HTTP_HOSTはブラウザからリクエストされた名前で SERVER_NAMEはサーバー側が自分で持っている名前です。 HTTP_HOSTがないような場合はSERVER_NAMEは自分で持っている 名前をブラウザに返すようでおもにCGIなどに利用されます。 設定によっては別の名前を返しますが、ほとんどの場合 SERVER_NAMEはHTTP_HOSTと同値になるようですね

すると、全ての回答が全文表示されます。

関連するQ&A