2017-03-02 6 views
2

自分のプラットフォームにホワイトリストソリューションを実装するために、ワイルドカードサブドメインを実装する必要があります。唯一の問題は、私たちのシステムがサブドメイン自体に座っていることです。だから私は特定のサブドメインに来るものを除外する必要があります。しかし、私の上のコードを使用してユーザーのためのLaravelワイルドカードサブドメイン

// *.website.co.uk 
Route::group(['domain' => '{element}.website.co.uk'], function() { 
    Route::get('/', function ($element) { 
     dd($element); 
    }); 
}); 

// my.website.co.uk 
Route::get('/', '[email protected]'); 
Route::post('/', '[email protected]'); 

は、エラーを取得する:

Undefined variable: element

どのように私はこのエラーを回避するのでしょうか?

答えて

2

良い方法は、パターンを使用して「マイ」を除外することです。また

Route::pattern('element', '(?!^my$)'); 

、あなたのRouteSericeProviderのブート()のセクションに行くことができます:あなたのルートファイルの先頭にこのコードを入れてください。あなたの作業溶液を与えるために、あなたのコードは、以下の(後で整理することができます!)

Route::pattern('element', '(?!^my$)'); 

Route::group(['domain' => '{element}.website.co.uk'], function() { 
    Route::get('/', '[email protected]'); 
    Route::post('/', '[email protected]'); 
}); 

なっ別の方法は、{}の要素ルートを照合する前に「私の」ルートを一致させることです。しかし、多くの人がこれをやっているが、コメントの中でルートの順序が明確に説明されていないと、維持するのが難しいかもしれないと思う。

+1

ありがとうございました。my.website.co.ukのルートも同じ開発環境にあるため、コードを更新しました。 Route ::パターンはRoute ::グループに対して機能し、それから他のルートはmy.website.co.ukドメインで動作します。再度、感謝します –

関連する問題