Laravel子域路由不起作用

时间:2017-01-17 17:16:59

标签: php laravel laravel-5 laravel-5.1 subdomain

我正在尝试拥有管理子域名(like this

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

admin.localhost就像localhost一样。 我该如何正确地做到这一点?

我在OSX上使用Laravel 5.1和MAMP

2 个答案:

答案 0 :(得分:16)

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

答案 1 :(得分:1)

Laravel的例子......

javafx.application.Application

您的代码

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

如果查看laravel示例,它会在路径中获取参数Route::group(['domain' => 'admin.localhost'], function () { Route::get('/', function () { return view('welcome'); }); }); ,这样我们就可以根据此变量进行路由。然后可以将其应用于组或其中的任何路径。

那就是说,如果它不是由您的数据库驱动的东西,而您只是想要它与admin子域,我个人会这样做作为nginx配置。

如果你想在本地测试nginx(更简单),我个人建议用docker进行开发。

希望这能回答你的问题,如果不是让我知道并且生病了,试着为你回答。