Comment puis-je obtenir l'URL complète de la page actuelle?

32

J'ai besoin d'obtenir l'URL complète de la page actuellement ouverte. J'utilise le code suivant, mais il revient http://localhost/mysite/page_name.

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

Il ne suffit pas que mon code se termine; Je veux obtenir les valeurs transmises avec l'URL en tant que http://localhost/mysite/page_name/value1=value&value2=value.

Comment puis je faire ça?

abd
la source

Réponses:

32

Avez-vous essayé d'utiliser request_uri () ?

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

Cela devrait faire l'affaire. Je ne l'ai pas essayé moi-même, et je suis peut-être un peu en retrait, mais je vous suggère d'essayer. Depuis JavaScript, vous pouvez utiliser la window.location.hrefvariable.

optimusprime619
la source
super astuce j'ai utilisé $ _SERVER ['REQUEST_URI'] pour obtenir l'url mais quand j'imprime l'url: sitename / pagename? field_empf_salaryfrom_tid = All & field_emp_date_value [value] [year] = & field_emp_date_value [value] [month] = Comment puis-je supprimer le sitemap / nom de page
abd
2
@abd Vous cherchez probablement$_SERVER['QUERY_STRING']
Clive
Puis-je mettre toutes les valeurs de l'URL dans une variable? Comme la valeur de (field_empf_salaryfrom_tid = All) dans $ s
abd
Je suggère d' ajouter le protocole à la réponse avecisset($_SERVER["HTTPS"]) ? 'https' : 'http';
augusto
request_uri()fonctionne même sur 404 pages, c'est vraiment une bonne chose.
leymannx
24

Voici comment obtenir l'URL absolue de la page actuelle, en utilisant l'API Drupal:

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

Si vous avez également besoin des paramètres de chaîne de requête supplémentaires (non q), vous pouvez utiliser:

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

Vous pouvez utiliser le code suivant.

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

Essayez la variable $ base_url , fournit l'URL d'installation de Drupal sans "/" et current_path () elle retourne le chemin de la page en cours de visualisation.

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

Je pense que la meilleure façon de le faire est d'utiliser l'API url () comme celle-ci

url('your/drupal/path', array('absolute' => TRUE));
Roberto Peruzzo
la source
La question demande une page générique, pas une pour laquelle le chemin est connu.
kiamlaluno
Vous pouvez remplacer your/drupal/path¡par current_path(), comme l'a écrit @ david-thomas auparavant.
Roberto Peruzzo