¿Cómo obtengo la URL completa de la página actual?

32

Necesito obtener la URL completa de la página abierta actualmente. Yo uso el siguiente código, pero vuelve http://localhost/mysite/page_name.

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

No es suficiente que mi código se complete; Quiero obtener los valores que se pasan con la URL como http://localhost/mysite/page_name/value1=value&value2=value.

¿Cómo puedo hacer eso?

abd
fuente

Respuestas:

32

¿Has intentado usar request_uri () ?

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

Debería hacer el truco. No lo he probado yo mismo, y puedo estar un poco fuera, pero te sugiero que lo pruebes. Desde JavaScript, puede usar la window.location.hrefvariable.

optimusprime619
fuente
gran truco. Utilicé $ _SERVER ['REQUEST_URI'] para obtener la url, pero cuando imprimo la url: sitename / pagename? field_empf_salaryfrom_tid = All & field_emp_date_value [value] [year] = & field_emp_date_value [value] [month] = ¿Cómo puedo eliminar sitename? / pagename
abd
2
@abd Probablemente estés buscando$_SERVER['QUERY_STRING']
Clive
¿Puedo poner todos los valores de la url en una variable? Como el valor de (field_empf_salaryfrom_tid = All) en $ s
abd
Sugiero agregar protocolo a la respuesta conisset($_SERVER["HTTPS"]) ? 'https' : 'http';
augusto
request_uri()incluso funciona en 404 páginas, eso es algo realmente bueno.
leymannx
24

Aquí se explica cómo obtener la URL absoluta para la página actual, utilizando la API de Drupal:

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

Si necesita también los parámetros de cadena de consulta adicionales (no q), puede usar:

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

Puedes usar el siguiente código.

global $base_root;
$current_url = $base_root . request_uri();
echo $current_url;
kumar
fuente
3

Pruebe la variable $ base_url , proporciona la URL de instalación de Drupal sin "/" y current_path () devuelve la ruta de la página actual que se está viendo.

global $base_url;
$current_path = $base_url . '/' . current_path();
Yogesh
fuente
0

Creo que la mejor manera de hacerlo es usar url () API como esta

url('your/drupal/path', array('absolute' => TRUE));
Roberto Peruzzo
fuente
La pregunta es pedir una página genérica, no una para la cual se conoce la ruta.
kiamlaluno
Ok, puedes reemplazar your/drupal/path¡con current_path(), como @ david-thomas escribió antes.
Roberto Peruzzo