資料の準備
- きれいな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);
});
});
ログイン後にコピー
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
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); }); });
ログイン後にコピー
- メソッドの追加:
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>
ログイン後にコピー
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(); // }
ログイン後にコピー
2. ドメインは、サブドメイン名を区別するために使用できるだけでなく、パラメータの分割にも使用できます。
3. Laravel に注意してください。慎重に実行し、経験して、ルーティングの一致順序についてよく理解していただければ幸いです。
4. ドメイン名が変更されました。区別できるため、異なるコントローラーにバインドしたり、異なるモデルをバインドしたりできます。