web-dev-qa-db-fra.com

Laravel l'acheminement des sous-domaines ne fonctionne pas

J'essaie d'avoir un sous-domaine admin ( comme ceci )

Route::group(['domain' => 'admin.localhost'], function () {
    Route::get('/', function () {
        return view('welcome');
    });
});

mais admin.localhost agit exactement comme localhost . Comment je suis censé le faire correctement?

J'utilise Laravel 5.1 et MAMP sous OSX

8
01000110

Laravel traite les itinéraires selon le principe du premier arrivé, premier servi. Par conséquent, vous devez placer vos itinéraires les moins spécifiques en dernier dans le fichier des itinéraires. Cela signifie que vous devez placer votre groupe de routes au-dessus de toutes les routes ayant le même chemin.

Par exemple, cela fonctionnera comme prévu:

Route::group(['domain' => 'admin.localhost'], function () {
    Route::get('/', function () {
        return "This will respond to requests for 'admin.localhost/'";
    });
});

Route::get('/', function () {
    return "This will respond to all other '/' requests.";
});

Mais cet exemple ne va pas:

Route::get('/', function () {
    return "This will respond to all '/' requests before the route group gets processed.";
});

Route::group(['domain' => 'admin.localhost'], function () {
    Route::get('/', function () {
        return "This will never be called";
    });
});
15
BrokenBinary

L'exemple de Laravel ...

Route::group(['domain' => '{account}.myapp.com'], function () {
    Route::get('user/{id}', function ($account, $id) {
        //
    });
});

Votre code

Route::group(['domain' => 'admin.localhost'], function () {
    Route::get('/', function () {
        return view('welcome');
    });
});

Si vous regardez l'exemple laravel, il obtient le paramètre $account dans la route, nous pouvons ainsi router en fonction de cette variable. Ceci peut ensuite être appliqué au groupe ou à n'importe quel itinéraire.

Cela dit, si ce n’est pas quelque chose qui dépend de votre base de données et que vous le voulez simplement avec le sous-domaine admin, je le ferais personnellement comme une configuration nginx.

Si vous souhaitez tester nginx localement (plus facilement), j’ai personnellement recommandé de faire du développement avec docker.

J'espère que cela répond à votre question, si vous ne le savez pas, essayez de répondre à votre place.

1
Matt The Ninja