it-swarm.com.de

Laravel Subdomain Routing funktioniert nicht

Ich versuche eine Admin-Subdomain zu haben ( so )

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

aber admin.localhost verhält sich genauso wie localhost . Wie soll ich das richtig machen?

Ich verwende Laravel 5.1 und MAMP unter OSX

8
01000110

Laravel verarbeitet Routen nach dem Prinzip "Wer zuerst kommt mahlt zuerst". Daher müssen Sie die am wenigsten spezifischen Routen als Letztes in die Routendatei aufnehmen. Dies bedeutet, dass Sie Ihre Routengruppe über alle anderen Routen mit demselben Pfad platzieren müssen.

Dies funktioniert beispielsweise wie erwartet:

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.";
});

Aber dieses Beispiel wird nicht:

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

Laravel's Beispiel ...

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

Dein Code

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

Wenn Sie sich das Laravel-Beispiel ansehen, erhält es den Parameter $account in der Route. Auf diese Weise können wir gemäß dieser Variablen routen. Dies kann dann auf die Gruppe oder eine beliebige Route angewendet werden.

Das heißt, wenn es nicht von Ihrer Datenbank gesteuert wird und Sie es nur mit Admin-Subdomain wollen, würde ich dies persönlich als Nginx-Konfiguration tun.

Wenn Sie Nginx lokal testen möchten (einfacher), empfehle ich persönlich, die Entwicklung mit Docker durchzuführen.

Ich hoffe, dies beantwortet Ihre Frage. Wenn nicht, lassen Sie es mich wissen und ich werde versuchen, sie für Sie zu beantworten.

1
Matt The Ninja