Laravel 5一个实例,多个相同的子域

时间:2017-03-05 19:40:02

标签: php laravel laravel-5 saas multisite

我想使用一个使用基本Laravel安装的服务器,并且具有引用该安装的子域。所有子域都将像SaaS一样。

我环顾四周,数据库连接很简单,但我想知道您是否可以使用相同的子域代码库智能地执行此操作。

子域名世界包括其子域所需的最少文件 - 也许是公共索引和引导程序?希望没有符合一切。

我并不担心服务器配置,我只想指出Laravel代码的正确方向,比如中间件处理请求然后指向该子域?

我读过的许多帖子都没有一个看似标准,任何想法或链接的答案?

另外,如果它是一个多服务器设置,那么核心的NFS服务器是否正常?

1 个答案:

答案 0 :(得分:3)

使用laravel,您可以在不使用子域的情况下检查URL,但只需检查组路由请求。

  

路由组也可用于处理子域路由。   可以像路由URI一样为子域分配路由参数,   允许您捕获子域的一部分以供您使用   路线或控制器。可以使用指定子域   组属性数组上的域键:

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

在laravel文档https://laravel.com/docs/5.4/routing#route-group-sub-domain-routing

上阅读更多相关信息

<强> BOUNTY

您还可以为同一Route::group提供更多参数,例如

Route::group(['domain' => '{subdomain}.{domain}.{tld}'], function () {
    Route::get('user/{id}', function ($account, $id) {
        // your code
    });
});

同时,您可以决定使用Route::pattern定义限制您要接受的域参数。

Route::pattern('subdomain', '(dev|www)');
Route::pattern('domain', '(example)');
Route::pattern('tld', '(com|net|org)');
Route::group(['domain' => '{subdomain}.{domain}'], function () {
    Route::get('user/{id}', function ($account, $id) {
        // your code
    });
});

在前面的示例中,将接受以下所有域并正确路由

  • www.example.com
  • www.example.org
  • www.example.net
  • dev.example.com
  • dev.example.org
  • dev.example.net