web-dev-qa-db-fra.com

Comment obtenir l'URL racine du domaine dans Laravel 4?

Je suis prêt à crier à quel point cela peut être difficile? J'essaye depuis trop longtemps. Si j'ai http://www.example.com/more/pages/page.php ou similaire, je veux pouvoir obtenir www.example.com.

C'est tout. Je peux donc l'utiliser à ma guise. Bien sûr, cela changera en production ou en développement, donc je veux le vérifier dynamiquement.

Request::root()

renvoie http://www.example.com/more/pages/page.php

URL::to('/')

renvoie http://www.example.com/more/pages/page.php

Comment est-ce que j'obtiens ceci? Pourquoi ai-je tant de mal à faire ça ??

23
Shane

MISE À JOUR (2017-07-12)

Une meilleure solution consiste à utiliser Request::getHost()

Réponse précédente:

Je viens de vérifier et Request::root(); retourne http://www.example.com dans mon cas, quelle que soit la voie sur laquelle je suis. Vous pouvez ensuite procéder comme suit pour supprimer le http:// partie:

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

Vous voudrez peut-être revérifier ou publier plus de code (routes.php, code contrôleur, ...) si le problème persiste.

Une autre solution consiste à simplement utiliser $_SERVER['SERVER_NAME'].

36
lowerends

Vous pouvez également tester l'un de ces éléments:

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

Il semble préférable de faire un traitement

Request::root()

D'accord.

29
Seiji Manoan

Dans Laravel 5.1 et versions ultérieures, vous pouvez utiliser

request()->getHost();

ou

request()->getHttpHost();

(le second ajoutera un port s'il n'est pas standard)

14
Marcin Nabiałek

Mon indice:

  1. TROUVEZ SI EXISTE en .env:

    APP_URL=http://yourhost.dev

  2. REMPLACER (OU AJOUTER)

    APP_DOMAIN=yourhost.dev

  3. TROUVEZ dans config/app.php:

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

  4. REMPLACER

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

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

  5. UTILISATION:

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

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

  6. Faites votre magie!

12
kivagant

C'est pour Laravel 5.1 et je ne suis pas sûr que cela fonctionne pour les versions antérieures mais si quelqu'un recherche sur Google et atterrit ici, cela pourrait être pratique dans la fonction de gestion du middleware obtient le paramètre $ request:

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

en dehors de la méthode de gestion du middleware, vous pouvez y accéder par une demande de fonction d'assistance ()

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