如何获取当前页面的完整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

我怎样才能做到这一点?

Answers:


32

您是否尝试过使用request_uri()

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

它应该可以解决问题。我自己还没有尝试过,可能有点不满意,但是我建议您尝试一下。在JavaScript中,您可以使用window.location.href变量。


我使用$ _SERVER ['REQUEST_URI']来获得URL的大技巧,但是当我打印URL时:sitename / pagename?field_empf_salaryfrom_tid = All&field_emp_date_value [value] [year] =&field_emp_date_value [value] [month] =如何删除站点名/ pagename
abd 2012年

2
@abd您可能正在寻找$_SERVER['QUERY_STRING']
Clive

我可以将网址中的每个值都放入变量中吗?就像(field_empf_salaryfrom_tid = All)的值(以美元为单位)
abd

我建议将协议添加到答案isset($_SERVER["HTTPS"]) ? 'https' : 'http';
augusto

request_uri()甚至可以在404页上使用,这确实是一件好事。
leymannx

24

以下是使用Drupal API获取当前页面的绝对URL的方法:

$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;


0

我认为最好的方法是使用url()API这样的

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

问题是要一个通用页面,而不是已知路径的页面。
kiamlaluno

好的,您可以替换your/drupal/path¡current_path(),就像@ david-thomas之前写的那样。
罗伯托·佩鲁佐
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.