【问题标题】:Laravel 5 one instance, multiple identical subdomainsLaravel 5 一个实例,多个相同的子域
【发布时间】:2017-03-05 19:40:01
【问题描述】:

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

我环顾四周,数据库连接很容易,但我想知道您是否可以使用相同的子域代码库智能地做到这一点。

子域世界包括其子域所需的最少文件——也许是公共索引和引导程序?希望不要对所有内容进行符号链接。

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

我读过的很多帖子都没有看起来标准的答案,有什么想法或链接吗?

另外,如果是多服务器设置,使用 NFS 服务器作为核心不是可以吗?

【问题讨论】:

    标签: php laravel laravel-5 saas multisite


    【解决方案1】:

    使用 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 上阅读更多相关信息


    赏金

    您还可以为同一个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

    【讨论】:

      猜你喜欢
      • 2016-09-08
      • 2016-10-26
      • 1970-01-01
      • 1970-01-01
      • 2016-05-28
      • 2011-11-28
      • 1970-01-01
      • 2015-10-21
      相关资源
      最近更新 更多