Оглавление
Вот некоторые параметры которыми мы будем пользоваться в целях получения URL:
- HTTPS - Принимает непустое значение, если запрос был произведён через протокол HTTPS.
- HTTP_HOST - Содержимое заголовка Host: из текущего запроса, если он есть.
- REQUEST_URI - URI, который был передан для того, чтобы получить доступ к этой странице. Например, '/index.html'.
- QUERY_STRING - Строка запросов, если есть, с помощью которой была получена страница.
Для примера возьмём вымышленный адрес страницы https://site.com/category/page?sort=asc
Полный URL
$url = ((!empty($_SERVER['HTTPS'])) ? 'https' : 'http') . '://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
echo $url;
Результат: https://site.com/category/page?sort=ascURL без GET параметров
$url = ((!empty($_SERVER['HTTPS'])) ? 'https' : 'http') . '://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
//Разбиваем полный URL по символу «?», после которого перечисляются
//GET параметры, т.е. получаем массив с 2 строками 0 - путь, 1 - GET параметры
$url = explode('?', $url);
$url = $url[0];
Результат: https://site.com/category/page
Адрес страницы с GET параметрами
Т.е. мы получим внутренний адрес на сайте, без домена и протокола
$url = $_SERVER['REQUEST_URI'];
echo $url;
Результат: /category/page?sort=ascТолько адрес страницы
$url = $_SERVER['REQUEST_URI'];
//Разбиваем строку по тому же правило, что было описано выше
$url = explode('?', $url);
$url = $url[0];
echo $url;
Результат: /category/pageТолько GET параметры
echo $_SERVER['QUERY_STRING'];
Результат: sort=ascОднако с такой строкой не очень то удобно работать, но её можно преобразовать в ассоциативный массив. Для этого существует функция parse_str() она разбирает строку GET запроса на переменные.
$output = [];
parse_str($_SERVER['QUERY_STRING'], $output);
Результат:
Array
(
[sort] => asc
)