你可以使用这个包Gecce Multi Domain轻松做到这一点
安装
添加 gecche/laravel-multidomain 作为 composer.json 的要求:
{
"require": {
"gecche/laravel-multidomain": "4.*"
}
}
使用 composer update 更新您的包或使用 composer install 安装。
你也可以使用 composer require gecche/laravel-multidomain 添加包,然后指定你想要的版本(目前,dev-v1.1.* 是你最好的选择)。
这个包需要在引导过程的一开始就在最小的 Laravel 核心函数集中覆盖对 HTTP 域的检测,以获取特定的环境文件。所以这个包比大多数 Laravel 包需要更多的配置步骤。
安装步骤:
通过修改 bootstrap/app.php 文件最顶部的以下几行来替换整个 Laravel 容器。
//$app = new Illuminate\Foundation\Application(
$app = new Gecche\Multidomain\Foundation\Application(
$_ENV['APP_BASE_PATH'] ?? dirname(__DIR__)
);
更新两个应用程序内核(HTTP 和 CLI)。
在 app/Http/Kernel.php 文件的最顶部,进行以下更改:
//use Illuminate\Foundation\Http\Kernel as HttpKernel;
use Gecche\Multidomain\Foundation\Http\Kernel as HttpKernel;
同样在 app/Console/Kernel.php 文件中:
//use Illuminate\Foundation\Console\Kernel as ConsoleKernel;
use Gecche\Multidomain\Foundation\Console\Kernel as ConsoleKernel;
使用 config/app.php 文件中 $providers 数组中的扩展项覆盖 QueueServiceProvider:
//Illuminate\Queue\QueueServiceProvider::class,
Gecche\Multidomain\Queue\QueueServiceProvider::class,
发布配置文件。
php artisan vendor:publish
(这个包利用了发现功能。)
按照上述步骤,您的应用程序将知道正在运行的 HTTP 域,包括 HTTP 和 CLI 请求,包括队列支持。
用法
该包添加了三个命令来管理您的应用程序 HTTP 域:
domain.add artisan command
主要命令是 domain:add 命令,该命令将要添加到应用程序的 HTTP 域的名称作为参数。假设我们有两个域,site1.com 和 site2.com,共享相同的代码。
我们只是这样做:
php artisan domain:add site1.com
和
php artisan domain:add site2.com
这些命令会创建两个新的环境文件,.env.site1.com 和 .env.site2.com,您可以在其中放置每个站点的特定配置(例如数据库配置、缓存配置和其他配置,如通常所见)在环境文件中)。
该命令还在 config/domains.php 文件中的 domain 键中添加一个条目。
此外,还会创建两个新文件夹,即 storage/site1_com/ 和 storage/site2_com/。它们与主存储具有相同的文件夹结构。
对此存储子结构的自定义必须与 config/domain.php 文件中的值匹配。
domain.remove artisan 命令
domain:remove 命令通过删除其环境文件从应用程序中删除指定的 HTTP 域。例如:
php artisan domain:remove site2.com