PHP: $_SERVER variables: $_SERVER['HTTP_HOST'] vs $_SERVER['SERVER_NAME']

php

Solution

`$_SERVER['SERVER_NAME']` gives the value of the server name as defined in host configuration (i.e for Apache the Apache `.conf` file).

`$_SERVER['HTTP_HOST']` gives you the domain name through which the current request is being fulfilled and is more directly related to the request.

`HTTP_HOST` is typically more useful in most applications in that it relates directly to the request, whereas `SERVER_NAME` could return whatever value is in the conf file and doesn't tell you anything about the request at all.

I will give you an example of how `HTTP_HOST` might differ from `SERVER_NAME`. Say you have an host defined in Apache with ServerName of `example.com` and an IP address of `1.2.3.4`.

Let's look at two incoming request URLs and show the difference between these variables:

http://www.example.com
HTTP_HOST = www.example.com
SERVER_NAME = example.com

http://1.2.3.4
HTTP_HOST = 1.2.3.4
SERVER_NAME = example.com

So again, HTTP_HOST is tied more to the request, whereas SERVER_NAME is determined by server configuration.

Problem

Possible Duplicate: HTTP_HOST vs. SERVER_NAME What is the difference between `$_SERVER['HTTP_HOST']` and `$_SERVER['SERVER_NAME']` ??

Original source

Related problems