
В PHP URL страницы можно получить с помощью глобального массива $_SERVER. Основные элементы URL, такие как путь, домен и протокол, доступны через ключи REQUEST_URI, HTTP_HOST и HTTPS. Это позволяет формировать полные ссылки для редиректов, генерации ссылок на текущую страницу или сохранения адресов в базе данных.
Для получения полного URL важно учитывать протокол. Если сервер использует HTTPS, ключ $_SERVER[‘HTTPS’] будет равен ‘on’, иначе URL нужно формировать с http. При этом HTTP_HOST всегда возвращает доменное имя с учетом порта, если он указан нестандартно.
Когда требуется получить только путь и параметры запроса, достаточно использовать $_SERVER[‘REQUEST_URI’]. Для разборки URL на составляющие или изменения параметров удобно применять функции parse_url() и http_build_query(), что обеспечивает точное управление компонентами ссылки.
Использование этих методов позволяет создавать динамические ссылки, отслеживать источник перехода и корректно формировать адреса при работе с формами и GET-параметрами, не полагаясь на статические строки или сторонние библиотеки.
Использование $_SERVER[‘REQUEST_URI’] для текущего пути
![Использование $_SERVER['REQUEST_URI'] для текущего пути](/wp-content/images9/kak-poluchit-url-stranitsi-php-5hkxfjwb.jpg)
Ключ $_SERVER[‘REQUEST_URI’] возвращает часть URL после домена, включая путь и строку запроса. Например, для адреса https://site.ru/catalog/item.php?id=5 значение будет /catalog/item.php?id=5. Это позволяет точно получить текущий маршрут без необходимости строить URL вручную.
Чтобы использовать REQUEST_URI, достаточно присвоить его переменной: $currentPath = $_SERVER[‘REQUEST_URI’];. При работе с формами или ссылками этот метод гарантирует, что все параметры GET сохранятся и могут быть использованы для перенаправлений или логирования.
Для очистки строки запроса или выделения только пути применяется функция parse_url($currentPath, PHP_URL_PATH), которая возвращает /catalog/item.php, исключая параметры. Это удобно при построении навигационных меню или проверки маршрутов внутри приложения.
Использование $_SERVER[‘REQUEST_URI’] особенно полезно при работе с динамическими URL и роутерами, так как позволяет получить исходный путь без учета домена и протокола, минимизируя ошибки при формировании внутренних ссылок.
Получение полного URL с протоколом и доменом

Для получения полного URL страницы в PHP требуется объединить протокол, домен и путь. Протокол определяется через $_SERVER[‘HTTPS’]. Если его значение равно ‘on’, используется https://, иначе http://. Домен берется из $_SERVER[‘HTTP_HOST’], который учитывает порт при нестандартном подключении.
Пример формирования полного URL: $fullUrl = ($\_SERVER[‘HTTPS’] === ‘on’ ? ‘https://’ : ‘http://’) . $_SERVER[‘HTTP_HOST’] . $_SERVER[‘REQUEST_URI’];. Этот подход сохраняет все GET-параметры и путь текущей страницы.
При использовании нестандартного порта важно, что HTTP_HOST возвращает домен с указанием порта, например example.com:8080, что позволяет корректно формировать ссылки для редиректов и API-запросов.
Такой способ подходит для создания абсолютных ссылок, передачи URL в письмах, логирования переходов и генерации мета-тегов, где требуется точное указание адреса страницы.
Определение протокола: HTTP или HTTPS

В PHP протокол текущей страницы определяется через $_SERVER[‘HTTPS’]. Если значение равно ‘on’, соединение использует HTTPS, иначе – HTTP. Для серверов, которые передают информацию о протоколе через прокси, можно дополнительно проверять $_SERVER[‘HTTP_X_FORWARDED_PROTO’] или $_SERVER[‘REQUEST_SCHEME’].
Пример проверки протокола: $protocol = (!empty($_SERVER[‘HTTPS’]) && $_SERVER[‘HTTPS’] === ‘on’) ? ‘https://’ : ‘http://’;. Этот метод гарантирует корректное формирование ссылок, редиректов и абсолютных URL на сайте.
При генерации ссылок для внешних ресурсов или API важно учитывать точный протокол, иначе запросы могут быть заблокированы браузером из-за смешанного контента или ошибок CORS.
Использование проверок нескольких серверных переменных позволяет надежно определять протокол даже в сложных конфигурациях с балансировщиками нагрузки и прокси-серверами.
Получение параметров GET из URL

Параметры GET доступны в PHP через массив $_GET. Каждый ключ соответствует имени параметра в URL, а значение – его содержимому. Например, для URL example.com/page.php?id=10&category=books массив будет:
- $_GET[‘id’] = 10
- $_GET[‘category’] = ‘books’
Для безопасной работы с параметрами рекомендуется:
- Проверять существование ключа с помощью isset($_GET[‘ключ’]).
- Использовать filter_input(INPUT_GET, ‘ключ’, FILTER_SANITIZE_STRING) для очистки значений.
- Применять приведение типов, если ожидаются числа, через (int)$_GET[‘ключ’].
Для динамического перебора всех параметров можно использовать цикл foreach ($_GET as $key => $value), что удобно при генерации ссылок или сохранении данных формы.
Если требуется извлечь параметры из URL без их автоматического парсинга PHP, можно использовать parse_url($_SERVER[‘REQUEST_URI’], PHP_URL_QUERY) и parse_str() для обработки строки запроса вручную.
Сбор URL страницы с учетом порта сервера

Для точного формирования полного URL важно учитывать порт сервера. Стандартные порты 80 (HTTP) и 443 (HTTPS) можно опускать, а нестандартные необходимо включать. Порт доступен через $_SERVER[‘SERVER_PORT’].
Пример объединения протокола, домена, порта и пути:
$protocol = (!empty($_SERVER[‘HTTPS’]) && $_SERVER[‘HTTPS’] === ‘on’) ? ‘https://’ : ‘http://’;
$host = $_SERVER[‘HTTP_HOST’];
$port = $_SERVER[‘SERVER_PORT’];
$uri = $_SERVER[‘REQUEST_URI’];
$fullUrl = $protocol . $host . (($port != 80 && $port != 443) ? ‘:’ . $port : ») . $uri;
Такой подход позволяет корректно формировать URL для редиректов и ссылок на нестандартных портах, например http://example.com:8080/page.php?id=5. Это критично для приложений с тестовыми или локальными серверами.
Использование функций parse_url() и http_build_query()

Функция parse_url() позволяет разбить URL на составляющие: схему, хост, путь, строку запроса и другие компоненты. Например, для URL https://example.com/page.php?id=10&category=books вызов parse_url($url) вернет массив:
| Компонент | Значение |
|---|---|
| scheme | https |
| host | example.com |
| path | /page.php |
| query | id=10&category=books |
Для обработки GET-параметров используется parse_str(), которая преобразует строку запроса в массив:
| Ключ | Значение |
|---|---|
| id | 10 |
| category | books |
Функция http_build_query() позволяет собрать строку запроса обратно из массива. Пример:
$params = [‘id’ => 20, ‘category’ => ‘electronics’];
$queryString = http_build_query($params);
$fullUrl = $parsedUrl[‘scheme’] . ‘://’ . $parsedUrl[‘host’] . $parsedUrl[‘path’] . ‘?’ . $queryString;
Этот подход полезен при модификации параметров URL, динамическом построении ссылок и безопасном формировании адресов для редиректов или API-запросов.
Вопрос-ответ:
Как в PHP получить полный URL текущей страницы?
Для формирования полного URL объединяют протокол, домен, порт и путь. Протокол определяется через $_SERVER[‘HTTPS’], домен — через $_SERVER[‘HTTP_HOST’], путь и параметры — через $_SERVER[‘REQUEST_URI’]. Например: $url = (!empty($_SERVER[‘HTTPS’]) && $_SERVER[‘HTTPS’] === ‘on’ ? ‘https://’ : ‘http://’) . $_SERVER[‘HTTP_HOST’] . $_SERVER[‘REQUEST_URI’];. Это позволит получить точный адрес страницы, включая GET-параметры и нестандартный порт.
Можно ли получить только путь и параметры без домена?
Да, для этого используется $_SERVER[‘REQUEST_URI’]. Эта переменная возвращает строку после домена, включая путь и GET-параметры. Для извлечения только пути без параметров применяют parse_url($_SERVER[‘REQUEST_URI’], PHP_URL_PATH).
Как проверить, используется ли HTTPS на сервере?
Протокол проверяется через $_SERVER[‘HTTPS’]. Если значение равно ‘on’, соединение защищенное. Для серверов с прокси можно дополнительно проверять $_SERVER[‘HTTP_X_FORWARDED_PROTO’] или $_SERVER[‘REQUEST_SCHEME’]. Это позволяет корректно формировать ссылки для редиректов и API-запросов.
Как безопасно работать с GET-параметрами в URL?
Параметры GET доступны через массив $_GET. Рекомендуется проверять наличие ключа через isset($_GET[‘ключ’]), использовать фильтры, например filter_input(INPUT_GET, ‘ключ’, FILTER_SANITIZE_STRING), и при необходимости приводить типы, например (int)$_GET[‘ключ’]. Это предотвращает ошибки и инъекции при обработке данных.
Зачем использовать parse_url() и http_build_query() для URL?
Функция parse_url() разбивает URL на компоненты: схему, хост, путь, строку запроса. parse_str() преобразует строку запроса в массив параметров. Для обратной сборки URL применяют http_build_query(). Этот подход удобен при изменении параметров, динамическом формировании ссылок и корректной генерации адресов для редиректов или API-запросов.
Как в PHP получить полный URL страницы вместе с протоколом, доменом и параметрами?
Для получения полного URL необходимо соединить несколько компонентов. Протокол определяется через $_SERVER[‘HTTPS’] — если значение равно ‘on’, используется https, иначе http. Домен берется из $_SERVER[‘HTTP_HOST’], а путь и параметры — из $_SERVER[‘REQUEST_URI’]. Итоговая сборка выглядит так: $url = (!empty($_SERVER[‘HTTPS’]) && $_SERVER[‘HTTPS’] === ‘on’ ? ‘https://’ : ‘http://’) . $_SERVER[‘HTTP_HOST’] . $_SERVER[‘REQUEST_URI’];. Такой подход сохраняет все GET-параметры и корректно работает при нестандартных портах.
Как получить только GET-параметры из URL в виде массива?
GET-параметры доступны через массив $_GET. Каждый ключ соответствует имени параметра, а значение — содержимому. Если нужно получить параметры из строки запроса вручную, используют parse_url() для выделения query, а затем parse_str() для преобразования строки в массив. Это позволяет безопасно работать с данными и изменять параметры перед сборкой нового URL через http_build_query().
