【问题标题】:Laravel wildcard subdomain per user每个用户的 Laravel 通配符子域
【发布时间】:2016-07-31 23:10:43
【问题描述】:

场景:
使用 Laravel 5.2 / Digital Ocean / Laravel Forge(在安装站点时启用通配符域)

每个用户都有自己的子域。

主域:mydomain.com
用户域:{user}.mydomain.com

向域添加了 DNS 记录 (A) - * - ip address

路线:

Route::group(['domain' => '{user}.mydomain.com'], function () {
    return 'This user has a domain.';

    Route::get('user/{id}', function ($account, $id) {
        //
    });
});

Route::get('/', function () {
    return view('pages.home');
});

问题:
每个用户子域都会跳过group domain 并进入正常的Route get '/'。所以它不会返回'This user has a domain.';。出了什么问题?

Laravel Docs Wildcard Subdomains

【问题讨论】:

    标签: php laravel dns laravel-5.2 laravel-forge


    【解决方案1】:

    首先,您需要删除return 'This user has a domain.';,因为它会阻止此路由user/{id} 被注册。其次,尝试为您的子域添加默认路由:

    Route::group(['domain' => '{user}.mydomain.com'], function () {
    
        Route::get('/', function ($user) {
            return "This user has a domain: $user";
        });
    
        Route::get('user/{id}', function ($account, $id) {
            //
        });
    });
    

    希望对你有帮助。

    【讨论】:

      【解决方案2】:

      当您通过 Laravel Forge 创建新站点时,请务必勾选 允许通配符子域选项:

      然后确保使用以下命令在您的 DNS 中创建一个新的 A 记录 选项,使用您的服务器的 IP 地址,在这种情况下您正在使用 Digital Ocean,因此您可以像这样输入新记录:

      这就是您需要做的所有事情,现在等待您的 DNS 记录更新并 那么您将能够使用您的子域来实现路由,例如 所以:

      Route::group(['domain' => '{user}.mydomain.com'], function () {
          Route::get('/', function ($user) {
              return 'You are visiting the sub-domain for user: '.$user;
          });
      });
      

      我希望这会有所帮助!祝你好运:)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-05-12
        • 2017-06-22
        • 2017-12-14
        • 1970-01-01
        • 2020-08-23
        • 2014-12-09
        • 1970-01-01
        相关资源
        最近更新 更多