你好,
我想要得到的域名腳本運行的位置。這怎麼可以用PHP來完成? 我看到$_SERVER['HTTP_HOST']
以及$_SERVER['SERVER_NAME']
包含此信息。 該變量是否總能正常工作,我應該使用一個嗎?
謝謝。
你好,
我想要得到的域名腳本運行的位置。這怎麼可以用PHP來完成? 我看到$_SERVER['HTTP_HOST']
以及$_SERVER['SERVER_NAME']
包含此信息。 該變量是否總能正常工作,我應該使用一個嗎?
謝謝。
以前在stackoverflow中已經提出了類似的問題。
在這裏看到:PHP $_SERVER['HTTP_HOST'] vs. $_SERVER['SERVER_NAME'], am I understanding the man pages correctly?
也看到這篇文章:http://shiflett.org/blog/2006/mar/server-name-versus-http-host
使用HTTP_HOST推薦,並 回落僅如果沒有設置 HTTP_HOST SERVER_NAME。他說, SERVER_NAME可能是 服務器,適用於各種原因不可靠的, 包括:
- 沒有DNS支持
- 配置錯誤
- 背後負載均衡軟件
HTTP_HOST對我來說似乎是對的。 SERVER_NAME運行良好,直到我們開始使用Docker,然後給我們「localhost」。請注意,HTTP_HOST也會爲您提供子域名。 – 2017-02-15 20:13:18
要回答你的問題,這應該工作,只要:
但是,如果我沒有記錯,這些數值可以僞造的程度,所以最好不要依靠他們訪問腳本。
我個人的偏好是在apache2的虛擬主機set the domain name as an environment variable:
# Virtual host
setEnv DOMAIN_NAME example.com
// PHP
echo getenv(DOMAIN_NAME);
然而,這並不適用於所有情況。
這確實回答了我有關使用SERVER_NAME而不是其他的問題的一部分,但這是在PHP中執行此操作的正確方法嗎? (是另一部分)謝謝。 – Francisc 2011-03-23 11:57:55