資料の準備
- きれいなlaravel
-
2 つの 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);
});
});
注意: アカウントが固定されていない場合は、Nginx サーバー名を汎用として構成できます: #.example.com
- server_name *.amor_laravel_test.amor;
- server_name *.amor_laravel_test_1.amor;
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')); }
- Registration
public function map() { $this->mapApiRoutes(); $this->mapWebRoutes(); $this->mapSelfRoutes(); // }
- ルーティング ファイルの追加
Route::get('/user', function ($account) { dd($account); });
注: すべてのドメインを設定する必要があります。self のみが設定されている場合は、同じリクエスト パスの下で、設定されていないドメインが最初に一致します。
[推奨:最新の 5 つの Laravel ビデオ チュートリアル ]
複数のドメイン名でのルーティングにおけるアクションの説明まず、そのアクションを知る必要があります。ルートがバインドされるコントローラーを決定しますが、もう 1 つの注意点があります。ルートの Action 属性は、補助関数 Route() によって生成される URL を決定します。ルーティング構成が次のようになっているとします。
- 最初のルート
Route::get('/', function () { if(\Illuminate\Support\Facades\Auth::check()) { return redirect('index'); } else { return redirect('login'); } });
- 2 番目のルート
Route::get('/', function () { if(\Illuminate\Support\Facades\Auth::check()) { return redirect('index'); } else { return redirect('login'); } });
<form method="POST" class="form-horizontal" action="{{ route('login') }}"> --- </form>route() 補助関数のフォーム フォームを見てみましょう。ルート名リスト ロードされたログイン。これら 2 つのルーティング ファイルを RouteServiceProvider に同時にロードすると、
public function map() { $this->mapApiRoutes(); $this->mapWebRoutes(); $this->mapSelfRoutes(); // }その場合: 名前空間またはコントローラを区別しないと、ルート補助関数によって生成された絶対パスが最後のルート ドメインになります。したがって、ロジックに一貫性があり、簡単な変更によって異なるドメイン名で異なるサイトを区別したいだけの場合は、判断を下してオンデマンドでロードする必要があります:
public function map() { if(request()->getHost() == env('ONLINEDOWN_DOMAIN')) { $this->mapApiRoutes(); } if(request()->getHost() == env('PCSOFT_DOMAIN')) { $this->mapPcsoftRoutes(); } $this->mapWebRoutes(); // }概要: 1。 2 番目の方法は、ドメイン名を区別するために推奨されます。利点は、ルーティングが分離され、構造が明確になることです。
2. ドメインは、サブドメイン名を区別するために使用できるだけでなく、パラメータの分割にも使用できます。
3. Laravel に注意してください。慎重に実行し、経験して、ルーティングの一致順序についてよく理解していただければ幸いです。
4. ドメイン名が変更されました。区別できるため、異なるコントローラーにバインドしたり、異なるモデルをバインドしたりできます。