1. ホーム
  2. php

[解決済み] $_SERVER['DOCUMENT_ROOT'] と $_SERVER['HTTP_HOST'] の違いについて

2022-01-31 17:04:57

質問

素朴な疑問(または関連する疑問)を持って帰ってきました。

質問は簡単なのですが、まだ回答がありません。私はPHPの異なる経験を持つ多くの人々に尋ねました。しかし、私が得た回答は次のようなものでした: "私は何も考えていません。Googleで調べても、この件に関する記事は見つかりませんでした。ここで納得のいく回答が得られることを期待しています。

ということで、質問です。

とはどのような違いがあるのでしょうか? $_SERVER['DOCUMENT_ROOT']$_SERVER['HTTP_HOST'] ?

どちらか一方が優れている点はありますか?

HTTP_HOST & DOCUMENT_ROOT はどこで使うべきですか?

どのように解決するのですか?

<ブロッククオート

DOCUMENT_ROOT

Generalセクションの'DocumentRoot'ディレクティブで定義された、このサイトのルートディレクトリ、あるいは、例えば、セクション。

DOCUMENT_ROOT=/var/www/example 

HTTP_HOST

ホストのベースURL。

HTTP_HOST=www.example.com 

ドキュメントルートは、サーバー上のあなたのウェブサイトへのローカルパス、httpホストは、サーバーのホスト名です。 この2つはかなり違いますので、質問を明確にしていただけますか?

編集 : とおっしゃいましたね。

ケース1 : header('Location: '. $_SERVER['DOCUMENT_ROOT'] . '/abc.php')

ケース2:header('Location: '. $_SERVER['HTTP_HOST'] . '/abc.php')

最初の方法は、ページを提供しているのと同じマシンでブラウザを起動した場合にのみ機能するのではないでしょうか。

もし、他の人がWindowsマシンを使って、あなたのウェブサイトを訪問したとします。 そして、あなたのウェブサーバーがHTTPヘッダで彼らに、「おい、実は、この場所をリダイレクトしてくれ。/var/www/example/abc.php." ユーザーのマシンが何をすることを期待しているのでしょうか?

さて、次のような話であれば

<?php include($_SERVER['DOCUMENT_ROOT'] . '/include/abc.php') ?>

<?php include($_SERVER['HTTP_HOST'] . '/include/abc.php') ?>

それはそれで意味があるかもしれませんね。 私はPHPのグルではありませんが、この場合はおそらく前者が好ましいと思います。