ServerName, ServerAlias в httpd.conf Apache и переменная $_SERVER[‘SERVER_NAME’] в PHP

Если необходимо чтобы php возвращало в $_SERVER['SERVER_NAME’] имя хоста которое прописано в htppd.conf как ServerName даже в том случае если пользователь зашел по ServerAlias, то необходимо в htppd.conf веб-сервера Apache установить директиву UseCanonicalName On. В противном случае (UseCanonicalName Off) $_SERVER['SERVER_NAME’] будет равен хосту по которому пользователь зашел на сайт.

Пример №1:
httpd.conf
ServerName www.bla-bla.com
ServerAlias bla-bla.com
UseCanonicalName Off

Если зайти по http://www.bla-bla.com, то $_SERVER['SERVER_NAME’] будет равен www.bla-bla.com
Если зайти по http://bla-bla.com, то $_SERVER['SERVER_NAME’] будет равен bla-bla.com

Пример №2:
httpd.conf
ServerName www.bla-bla.com
ServerAlias bla-bla.com
UseCanonicalName On

Если зайти по http://www.bla-bla.com, то $_SERVER['SERVER_NAME’] будет равен www.bla-bla.com
Если зайти по http://bla-bla.com, то $_SERVER['SERVER_NAME’] будет равен www.bla-bla.com

Вывод: применение UseCanonicalName On удобнов в случае когда проводится обработка $_SERVER['SERVER_NAME’] для выдачи нужного сайта, при этом список псевдонимов сайтов можно вести не в скрипте, а на уровне веб-сервера прописывая псевдонимы с помощью ServerAlias, а главное имя установить как ServerName

  1. UseCanonicalName: Определяет как Apache строит внутренние URL-ссылки и
  2. значения переменных SERVER_NAME и SERVER_PORT. Когда задано "Off", Apache
  3. использует имя и порт, данные клиентом. Если же задано "On", то Apache
  4. использует значение директивы ServerName.
Получать новые сообщения по Email

Оставить комментарий