如何在Laravel 4中获取域根URL?

时间:2014-07-28 13:16:42

标签: url laravel-4 root

我准备尖叫这有多难?我一直在努力。 如果我有http://www.example.com/more/pages/page.php或类似的话,我希望能够获得 www.example.com。

多数民众赞成。所以我可以随意使用它。如果在生产或开发中,这当然会改变,所以我想动态地确定它。

Request::root()

返回http://www.example.com/more/pages/page.php

URL::to('/')

返回http://www.example.com/more/pages/page.php

我如何得到这个?为什么我这么做有这么多麻烦?

7 个答案:

答案 0 :(得分:35)

更新(2017-07-12)

更好的解决方案实际上是使用Request::getHost()

上一个回答:

我刚检查过,Request::root();确实在我的情况下返回http://www.example.com,无论我在哪条路上。然后,您可以执行以下操作以剥离http://部分:

if (starts_with(Request::root(), 'http://'))
{
    $domain = substr (Request::root(), 7); // $domain is now 'www.example.com'
}

如果问题仍然存在,您可能需要仔细检查或发布更多代码(routes.php,控制器代码......)。

另一种解决方案是简单地使用$_SERVER['SERVER_NAME']

答案 1 :(得分:27)

您也可以测试其中任何一项:

Request::server ("SERVER_NAME")
Request::server ("HTTP_HOST")

似乎比进行任何治疗

更好
Request::root()

好的。

答案 2 :(得分:13)

在Laravel 5.1及更高版本中,您可以使用

request()->getHost();

request()->getHttpHost();

(第二个将添加端口,如果它不是标准的那个)

答案 3 :(得分:11)

我的提示:

  1. 如果存在.env:

    APP_URL=http://yourhost.dev

  2. 替换(或添加)

    APP_DOMAIN=yourhost.dev

  3. 在config / app.php中查找:

    'url' => env('APP_URL'),

  4. 替换

    'domain' => env('APP_DOMAIN'),

    'url' => 'http://' . env('APP_DOMAIN'),

  5. 使用:

    Config::get('app.domain'); // yourhost.dev

    Config::get('app.url') // http://yourhost.dev

  6. 做你的魔法!

答案 4 :(得分:7)

这适用于Laravel 5.1,我不确定它是否适用于早期版本,但是如果有人在谷歌上搜索并在这里登陆它可能会在中间件处理函数中获得$ request参数:

$request->server->get('SERVER_NAME')

在中间件句柄方法之外,你可以通过辅助函数request()

来访问它
request()->server->get('SERVER_NAME')

答案 5 :(得分:1)

直接在你想要控制器或 web.php 的地方使用

Request::getHost();

答案 6 :(得分:-10)

我认为您可以使用asset('/')