如何获取Drupal页面的完整URL?

时间:2009-03-31 23:04:33

标签: php drupal content-management-system

我需要在Drupal站点中抓取当前页面的URL。它的内容类型无关紧要 - 可以是任何类型的节点。

我不是在寻找主题,基本网址或Drupal的get_destination的路径。我正在寻找一个函数或变量,它将完整地给我以下内容:

http://example.com/node/number

有或没有(更有可能)http://

8 个答案:

答案 0 :(得分:53)

drupal_get_destination()有一些内部代码指向正确的位置以获取当前内部路径。要将该路径转换为绝对URL,url()函数应该可以解决问题。如果传递'绝对'选项,它将生成完整的URL,而不仅仅是内部路径。它还将交换当前路径的任何路径别名。

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

答案 1 :(得分:37)

这是我发现有用的东西

global $base_root;
$base_root . request_uri();

返回查询字符串,它是核心中使用的内容:page_set_cache()

答案 2 :(得分:19)

你也可以这样做:

$current_url = 'http://' .$_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];

它快一点。

答案 3 :(得分:14)

尝试以下方法:

url($_GET['q'], array('absolute' => true));

答案 4 :(得分:12)

这个方法都是老方法,在drupal 7中我们可以非常简单

    current_path()

和另一个微小差异的功能

request_path()

答案 5 :(得分:3)

以下是 Drupal-ish

url(current_path(), array('absolute' => true)); 

答案 6 :(得分:0)

对于Drupal 8 ,您可以这样做:

$url = 'YOUR_URL';
$url = \Drupal\Core\Url::fromUserInput('/' . $url,  array('absolute' => 'true'))->toString();

答案 7 :(得分:-1)

也许你想要的只是普通的预定义变量。

考虑尝试

$_SERVER['REQUEST_URI'']

或阅读更多here