Как мне получить полный URL текущей страницы?


32

Мне нужно получить полный URL открытой в данный момент страницы. Я использую следующий код, но он возвращает http://localhost/mysite/page_name.

$path = isset($_GET['q']) ? $_GET['q'] : '<front>';
$link = url($path, array('absolute' => TRUE));

Этого кода недостаточно для завершения; Я хочу получить значения, которые передаются с URL как http://localhost/mysite/page_name/value1=value&value2=value.

Как я могу это сделать?

Ответы:


32

Вы пытались использовать request_uri () ?

$_SERVER['HTTP_HOST'] . request_uri();

Это должно сделать свое дело. Я сам не пробовал, и, может быть, немного отключился, но я предлагаю вам попробовать. Из JavaScript вы можете использовать window.location.hrefпеременную.


Отличный трюк, я использовал $ _SERVER ['REQUEST_URI'], чтобы получить URL-адрес, но когда я печатаю URL-адрес: имя_сети / имя_папки? / pagename
abd

2
@abd Вы, вероятно, ищете$_SERVER['QUERY_STRING']
Клайв

Могу ли я положить каждое значение из URL-адреса в переменной? Как и значение (field_empf_salaryfrom_tid = All) в $ s
abd

Я предлагаю добавить протокол к ответу сisset($_SERVER["HTTPS"]) ? 'https' : 'http';
август

request_uri()даже работает на 404 страницах, это действительно хорошо.
Leymannx

24

Вот как получить абсолютный URL для текущей страницы, используя Drupal API:

$current_url = url(current_path(), array('absolute' => TRUE));

Если вам также нужны дополнительные (не q) параметры строки запроса, вы можете использовать:

$current_url = url(current_path(), array('absolute' => TRUE, 
                                         'query' => drupal_get_query_parameters()));

7

Вы можете использовать следующий код.

global $base_root;
$current_url = $base_root . request_uri();
echo $current_url;

3

Попробуйте переменную $ base_url , предоставляет URL установки Drupal без "/", а current_path () возвращает путь к текущей просматриваемой странице.

global $base_url;
$current_path = $base_url . '/' . current_path();

0

Я думаю, что лучший способ сделать это с помощью API url (), как это

url('your/drupal/path', array('absolute' => TRUE));

Вопрос в том, чтобы задать общую страницу, а не ту, для которой известен путь.
kiamlaluno

Хорошо, вы можете заменить your/drupal/path¡на current_path(), как писал @ david-thomas ранее.
Роберто Перуццо
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.