Laravel 5.8 + Apache —子域配置

时间:2019-06-30 18:48:23

标签: apache virtualhost laravel-5.8 debian-jessie php-7.3

所以基本上我的问题是关于将一​​个(或多个)子域路由到单个Laravel应用。 要详细介绍,我有多个 Route :: group ,我想让它们“连接”到特定的子域。 例如:

  • 帐户 .domain.co→Route::domain('account.domain.co')→group(...
  • 视觉 .domain.co→Route::domain('visual.domain.co')→group(...

我已经这样配置我的虚拟主机:

<VirtualHost *:443>
    ServerName domain.co
    DocumentRoot /var/www/domain/public
    DirectoryIndex index.php
    [...]
</VirtualHost>

<VirtualHost *:443>
    ServerName account.domain.co
    DocumentRoot /var/www/domain/public
    DirectoryIndex index.php
    [...]
</VirtualHost>

<VirtualHost *:443>
    ServerName visual.domain.co
    DocumentRoot /var/www/domain/public
    DirectoryIndex index.php
    [...]
</VirtualHost>

如您所见,所有DocumentRoot是相同的。 从理论上讲,Laravel配置在前面已经解释过,它应该可以工作,但实际上 account.domain.co visual.domain.co domain.co 全部重定向到同一应用程序,而不是它们的特定 Route :: group


这是我的应用的web.php

Route::get('/', 'IndexController@index')→name('index');
[...]

Route::group([ 'domain' => 'account.domain.com', ],function() {
  Route::get('/', 'AccountController@index')→name('account.index');
  [...]
});

Route::group([ 'domain' => 'visual.domain.com', ],function() {
  Route::get('/', 'VisualController@index')→name('visual.index');
  [...]
});

哦,顺便说一句,我的配置是PHP 7.3Debian 8 (jessie)Apache 2.4.10Laravel 5.8

非常感谢您?

1 个答案:

答案 0 :(得分:0)

您正在定义Route::group,而没有调用它们。 对于此示例,您可能根本不需要这些组。关于这一点,documentation尚不清楚。我将它们包括在内,因为它不会伤害任何东西。

前两个用于默认的域访问方法(替换了您的代码中唯一使用的第一个路由get('/'))。

Route::domain('www.domain.com')->group(function() {
get('/', 'IndexController@index')->name('index');
})};

Route::domain('domain.com')->group(function() {
get('/', 'IndexController@index')->name('index');
})};

Route::domain('account.domain.com')->group(function() {
  Route::get('/', 'AccountController@index')->name('account.index');
})};

Route::domain('visual.domain.com')->group(function() {
  Route::get('/', 'VisualController@index')->name('visual.index');
})};
//...