材料准备一份干净的laravel两份Nginx配置文件,主要配置如下:server_name *.amor_laravel_test_1.amor;root /var/www/amor_laravel_test/public;index index.php index.html index.htm;server_name *.amor_laravel_test.amor;root /var/www/amor_laravel_test/public;index index.php index.html index.htm;将域名分割为参数Route::domain(’{account}.{webname}.{suffix}’)->group(function () { Route::get(‘user/{id}’, function ($account, $webname, $suffix, $id) { // 可以在请求中接收到被分割的参数,可能的使用场景:在单独路由中需要根据不同的域名处理不同的需求 dd($account, $webname, $suffix, $id); });});注意: 若account不固定,可以将Nginx Server Name 配置为泛型: *.example.com关于多域名配置两个不同的域名如下:server_name *.amor_laravel_test.amor;server_name *.amor_laravel_test_1.amor;如何让Laravel匹配不同的域名?方式1:直接在 route/web.php中使用domain区分Route::domain(’{account}.amor_laravel_test.amor’)->group(function () { Route::get(‘user/{id}’, function ($account, $id) { // dd($account, $id); });});Route::domain(’{account}.amor_laravel_test_1.amor’)->group(function () { Route::get(‘user/{id}’, function ($account, $id) { // dd(111, $account, $id); });});方式2:通过设置 RouteServiceProvider 区分添加方法: protected function mapSelfRoutes() { Route::domain(’{account}.amor_laravel_test_1.amor’) ->middleware(‘web’) ->namespace($this->namespace) ->group(base_path(‘routes/self.php’)); }注册 public function map() { $this->mapApiRoutes(); $this->mapWebRoutes(); $this->mapSelfRoutes(); // }添加路由文件Route::get(’/user’, function ($account) { dd($account);});注意: 必须全部设置domain,如果只设置了self 那么在相同请求路径下,未设置domain的将会首先匹配到。总结:推荐第二种方式来区分域名,优点在于路由分离 ,结构清晰,domain不仅仅可以作为区分子域名来使用,也可以做参数分割,不同域名区分等注意Laravel的路由匹配顺序,希望大家能认真的做一遍,体验一下,做到心中有数既然已经区分开域名,那么就可以绑定到不同的控制器,或者绑定不同的模型,大家灵活应用