web-dev-qa-db-ja.com

Laravel 4でドメインルートURLを取得する方法?

これがどれほど難しいかを叫ぶ準備はできていますか?私はあまりにも長い間試してきました。 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 を返します

どうすれば入手できますか?なぜこれを行うのに苦労していますか?

23
Shane

更新(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']を使用することです。

36
lowerends

次のいずれかをテストすることもできます。

Request::server ("SERVER_NAME")
Request::server ("HTTP_Host")

どんな治療をするよりも良いようです

Request::root()

大丈夫。

29
Seiji Manoan

Laravel 5.1以降では使用できます

request()->getHost();

または

request()->getHttpHost();

(2番目のポートは、標準ポートではない場合、ポートを追加します)

14

私のヒント:

  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. 魔法をかけてください!

12
kivagant

これはLaravel 5.1であり、以前のバージョンで動作するかどうかはわかりませんが、誰かがGoogleで検索してここに着くと、ミドルウェアハンドル関数が$ requestパラメーターを取得できる場合があります。

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

ミドルウェアハンドルメソッドの外では、ヘルパー関数request()でアクセスできます

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