Как получить корневой url домена в Laravel 4?

Я готов кричать, как трудно это может быть? Я слишком долго пыталась. Если у меня есть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

Как я могу сделать это? Почему у меня столько проблем с этим??

6 ответов


обновление (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'].


вы также можете проверить любой из них:

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

это кажется лучше, чем сделать любую обработку

Request::root()

все правильно.


мое предложение:

  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. ваша магия!


в Laravel 5.1 и более поздних версиях вы можете использовать

request()->getHost();

или

request()->getHttpHost();

(второй добавит порт, если он не стандартный)


Это для Laravel 5.1, и я не уверен, что он работает для более ранних версий, но если кто-то ищет в Google и приземляется здесь, это может быть удобно в функции middleware handle получает параметр $request:

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

вне метода middleware handle вы можете получить к нему доступ с помощью вспомогательной функции request ()

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

Я думаю, вы можете использовать asset('/')