Как получить корневой 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
Как мне это получить? Почему у меня так много проблем, чтобы сделать это?
Ответы
Ответ 1
Я только что проверил и 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']
.
Ответ 2
Вы также можете протестировать любое из них:
Request::server ("SERVER_NAME")
Request::server ("HTTP_HOST")
Кажется лучше, чем делать какое-либо лечение
Request::root()
Хорошо.
Ответ 3
Мой намек:
-
НАЙТИ, ЕСЛИ EXISTS в .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
-
Сделайте свою магию!
Ответ 4
В Laravel 5.1 и более поздних версиях вы можете использовать
request()->getHost();
или
request()->getHttpHost();
(второй добавит порт, если он не стандартный)
Ответ 5
Это для Laravel 5.1, и я не уверен, что он работает для более ранних версий, но если кто-то ищет в Google и приземляется здесь, это может быть удобно в функции обработки промежуточного программного обеспечения, получает параметр $request:
$request->server->get('SERVER_NAME')
вне метода дескриптора промежуточного программного обеспечения вы можете получить к нему доступ с помощью вспомогательной функции request()
request()->server->get('SERVER_NAME')
Ответ 6
Я думаю, вы можете использовать asset('/')