web-dev-qa-db-ja.com

Laravelサブドメインルーティングが機能していません

管理サブドメインを作成しようとしています( このように

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

ただし、 admin.localhostlocalhost と同じように機能します。これを正しく行うにはどうすればよいですか?

私はLaravel 5.1とOSXのMAMPを使用しています

9
01000110

Laravelは先着順でルートを処理するため、最も具体的でないルートをルートファイルの最後に配置する必要があります。これは、同じパスを持つ他のルートの上にルートグループを配置する必要があることを意味します。

たとえば、これは期待どおりに機能します。

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

しかし、この例では次のことはできません。

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

Laravelの例...

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

あなたのコード

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

laravelの例を見ると、ルートでパラメーター$accountを取得しているため、この変数に従ってルーティングできます。これは、グループまたは任意のルートに適用できます。初期化..

そうは言っても、それがデータベースによって駆動されるものではなく、adminサブドメインでそれが必要な場合は、個人的にnginx構成としてこれを行います。

Nginxをローカルで(より簡単に)テストしたい場合は、dockerを使用して開発を行うことを個人的にお勧めします。

これがあなたの質問に答えることを願っています、そうでなければ私に知らせて、あなたのために答えようとします。

1
Matt The Ninja