Возможный дубликат:
HTTP_HOST и SERVER_NAME
Здравствуйте,
Я хочу получить доменное имя для сценария. Как это можно сделать с PHP? Я вижу, что эта информация содержит $_SERVER['HTTP_HOST']
а также $_SERVER['SERVER_NAME']
. Будет ли эта переменная работать всегда, и я должен использовать ее над другой?
Спасибо.
Аналогичный вопрос задан в stackoverflow раньше.
См. Здесь: PHP $ _SERVER ['HTTP_HOST'] против $ _SERVER ['SERVER_NAME'], правильно ли я понимаю страницы руководства?
Также см. Эту статью: http://shiflett.org/blog/2006/mar/server-name-versus-http-host
Рекомендуется использовать HTTP_HOST и вернуться к серверу SERVER_NAME, только если HTTP_HOST не был установлен. Он сказал, что SERVER_NAME может быть ненадежным на сервере по разным причинам, в том числе:
- поддержка DNS
- неправильно
- программное обеспечение для балансировки нагрузки
Чтобы ответить на ваш вопрос, они должны работать до тех пор, пока:
Но, если я правильно помню, эти ценности могут быть подделаны до такой степени, поэтому лучше не полагаться на них.
Мое личное предпочтение заключается в том, чтобы установить имя домена как переменную среды в виртуальном хосте apache2:
# Virtual host setEnv DOMAIN_NAME example.com
И прочитайте его в PHP :
// PHP echo getenv(DOMAIN_NAME);
Это, однако, не применимо ни при каких обстоятельствах.