Как получить корневой 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()
все правильно.
мое предложение:
-
найти, если существует .env:
APP_URL=http://yourhost.dev
-
ЗАМЕНИТЬ НА (ИЛИ ДОБАВИТЬ)
APP_DOMAIN=yourhost.dev
-
найти в config / app.на PHP:
'url' => env('APP_URL'),
-
заменить К
'domain' => env('APP_DOMAIN'),
'url' => 'http://' . env('APP_DOMAIN'),
-
использование:
Config::get('app.domain'); // yourhost.dev
Config::get('app.url') // http://yourhost.dev
ваша магия!
в 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')