Come posso ottenere l'URL completo della pagina corrente?


32

Devo ottenere l'URL completo della pagina attualmente aperta. Uso il seguente codice, ma ritorna http://localhost/mysite/page_name.

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

Non è sufficiente che il mio codice venga completato; Voglio ottenere i valori che vengono passati con l'URL come http://localhost/mysite/page_name/value1=value&value2=value.

Come lo posso fare?

Risposte:


32

Hai provato a utilizzare request_uri () ?

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

Dovrebbe fare il trucco. Non l'ho provato da solo, e potrei essere un po 'fuori, ma ti suggerisco di provare. Da JavaScript, è possibile utilizzare la window.location.hrefvariabile.


grande trucco ho usato $ _SERVER ['REQUEST_URI'] per ottenere l'URL ma il momento in cui stampo l'URL: sitename / pagename? field_empf_salaryfrom_tid = All & field_emp_date_value [value] [year] = & field_emp_date_value [value] [month] = Come posso rimuovere sitename / nomepagina
abd

2
@abd Probabilmente stai cercando$_SERVER['QUERY_STRING']
Clive

Posso inserire ogni valore dall'URL in una variabile? Come il valore di (field_empf_salaryfrom_tid = All) in $ s
abd

Suggerisco di aggiungere il protocollo alla risposta conisset($_SERVER["HTTPS"]) ? 'https' : 'http';
agosto

request_uri()funziona anche su 404 pagine, è davvero una buona cosa.
leymannx il

24

Ecco come ottenere l'URL assoluto per la pagina corrente, utilizzando l'API Drupal:

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

Se sono necessari anche i parametri di querystring extra (non q), è possibile utilizzare:

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

7

Puoi usare il seguente codice.

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

3

Prova la variabile $ base_url , fornisce l'URL di installazione di Drupal senza "/" e current_path () restituisce il percorso della pagina corrente visualizzata.

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

0

Penso che il modo migliore per farlo sia usare l'API url () in questo modo

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

La domanda è chiedere una pagina generica, non una per la quale è noto il percorso.
kiamlaluno

Ok, puoi sostituirlo your/drupal/path¡con current_path(), come ha scritto @ david-thomas in precedenza.
Roberto Peruzzo,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.