Вы должны быть осторожны, полагаясь на переменные сервера, и это зависит от того, что веб-сервер хочет вам дать... Вот довольно безотказный способ получить URL-адрес.
$url = '';
if (isset($_SERVER['HTTPS']) && filter_var($_SERVER['HTTPS'], FILTER_VALIDATE_BOOLEAN))
$url .= 'https';
else
$url .= 'http';
$url .= '://';
if (isset($_SERVER['HTTP_HOST']))
$url .= $_SERVER['HTTP_HOST'];
elseif (isset($_SERVER['SERVER_NAME']))
$url .= $_SERVER['SERVER_NAME'];
else
trigger_error ('Could not get URL from $_SERVER vars');
if ($_SERVER['SERVER_PORT'] != '80')
$url .= ':'.$_SERVER["SERVER_PORT"];
if (isset($_SERVER['REQUEST_URI']))
$url .= $_SERVER['REQUEST_URI'];
elseif (isset($_SERVER['PHP_SELF']))
$url .= $_SERVER['PHP_SELF'];
elseif (isset($_SERVER['REDIRECT_URL']))
$url .= $_SERVER['REDIRECT_URL'];
else
trigger_error ('Could not get URL from $_SERVER vars');
echo $url;