Laravel Multisite
With this package it is possible to build multiple sites/(sub)domains on one codebase.
Installation
You can install the package via composer:
composer require appstract/laravel-multisite
Usage
Config (hosts, homestead)
First of all, you need to add the sites to your /etc/hosts
file and Homestead.yaml
. For example, mywebsite.dev
and blog.mywebsite.dev
. In the `Homestead.yaml, you need to map the sites to the same folder.
Publish
By running php artisan vendor:publish --provider="Appstract\Multisite\MultisiteServiceProvider"
in your project all files for multisite will be published. The files that will be published are: a migration, a seeder and a config file.
Seeder
The seeder will be published but needs to be run when running php artisan db:seed
, so you need the add $this->call(SitesTableSeeder::class);
to your DatabaseSeeder.php
file. The sites are now present in the database.
Routes
This is the main part, within your routes/web.php
you can set routes for your sites within route groups, like this:
Route::group([
'domain' => 'blog.'.config('multisite.host'),
'as' => 'blog.',
'middleware' => 'site:blog'
], function () {
Route::get('/', 'BlogController@homepage')->name('homepage');
});
The magic happens with the site middleware site:blog
. This will tell your app that the routes within the group are belonging to the blog. It will provide a variable called $currentSite
in all your views. There is also a config available, which you can access with Config::get('multisite.site')
.
Testing
$ composer test
Contributing
Contributions are welcome, thanks to y'all :)
About Appstract
Appstract is a small team from The Netherlands. <3 Laravel, Vue and other awesome tools.
Buy Us A Beer
Would be awesome if you would buy us a beer! Or a lot of beer :)
License
The MIT License (MIT). Please see License File for more information.