可能性のある複製:
HTTP_Host vs. SERVER_NAME
こんにちは、
スクリプトが実行されている場所のドメイン名を取得したい。 PHPでどのようにできますか? $_SERVER['HTTP_Host']
と$_SERVER['SERVER_NAME']
にこの情報が含まれていることがわかります。その変数は常に機能しますか?
ありがとうございました。
同様の質問が以前にstackoverflowで尋ねられました。
こちらをご覧ください: PHP $ _SERVER ['HTTP_Host'] vs. $ _SERVER ['SERVER_NAME']、マニュアルページを正しく理解していますか?
この記事も参照してください: http://shiflett.org/blog/2006/mar/server-name-versus-http-Host
HTTP_Hostを使用し、HTTP_Hostが設定されていない場合にのみSERVER_NAMEにフォールバックすることをお勧めします。彼は、SERVER_NAMEは次のようなさまざまな理由でサーバー上で信頼できない可能性があると述べました。
- dNSサポートなし
- 誤った設定
- 負荷分散ソフトウェアの背後
あなたの質問に答えるために、これらは以下の限り機能するはずです:
しかし、私が正しく覚えていれば、これらの値はある程度偽造される可能性があるため、それらに依存しないことが最善です。
私の個人的な好みは ドメイン名を環境変数として設定する Apache2仮想ホストです:
# Virtual Host
setEnv DOMAIN_NAME example.com
そして PHPで読む :
// PHP
echo getenv(DOMAIN_NAME);
ただし、これはすべての状況に当てはまるわけではありません。