Laravel 5.8 + Apache — 子域配置
Laravel 5.8 + Apache — Subdomain configuration
所以基本上我的问题是关于将子域(或多个子域)路由到单个 Laravel 应用程序。
为了更详细地说明,我有多个 Route::group,我想让它们 "connect" 到特定的子域。
例如:
- 账户.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.3
、Debian 8 (jessie)
、Apache 2.4.10
和 Laravel 5.8
。
您正在定义 Route::group
s 而没有调用它们。
对于这个例子,您可能根本不需要这些组; 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');
})};
//...
所以基本上我的问题是关于将子域(或多个子域)路由到单个 Laravel 应用程序。 为了更详细地说明,我有多个 Route::group,我想让它们 "connect" 到特定的子域。 例如:
- 账户.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.3
、Debian 8 (jessie)
、Apache 2.4.10
和 Laravel 5.8
。
您正在定义 Route::group
s 而没有调用它们。
对于这个例子,您可能根本不需要这些组; 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');
})};
//...