2016-05-17 27 views
0

Laravel 5.2では、パラメータを取得できるようにワイルドカードサブドメイングループを設定したいと考えています。私も['domain' => '{alias}.*']を試してみましたサブドメインとドメインのワイルドカードを使用してLaravelでルートを作成する

Route::group(['middleware' => ['header', 'web']], function() { 
    Route::group(['domain' => '{alias}.'], function() { 
     Route::get('alias', function($alias){ 
      return 'Alias=' . $alias; 
     }); 
    }); 
}); 

:私はこれを試してみました。

私はこのURLをhttp://abc.localhost:8000/aliasと呼んでおり、ルートが見つからないというエラーを返します。

私のローカル環境は、php artisan serveコマンドを使用してlocalhost:8000です。実際にドメイン名を使用せずにローカルで設定することは可能ですか?あなたが持っている2行目に

答えて

1

私は前と同じような仕事をしていました。ドメインを捕まえたいなら、どんな形式でもかまいません - 残念ながら、ルートファイルで直接行うことはできません。 Routesファイルでは、URLの少なくとも一部があらかじめ定義された静的であることが必要です。

私は何をやってしまった、例えば、ドメインのURLを解析し、それに基づいて、いくつかのロジックを行うミドルウェアを作成している:

class DomainCheck 
{ 
    /** 
    * Handle an incoming request. 
    * 
    * @param \Illuminate\Http\Request $request 
    * @param \Closure $next 
    * @return mixed 
    */ 
    public function handle($request, Closure $next) 
    { 
     $domain = parse_url($request->url(), PHP_URL_HOST); 

     // Remove www prefix if necessary 
     if (strpos($domain, 'www.') === 0) $domain = substr($domain, 4); 

     // In my case, I had a list of pre-defined, supported domains 
     foreach(Config::get('app.clients') as $client) { 
      if (in_array($domain, $client['domains'])) { 
       // From now on, every controller will be able to access 
       // current domain and its settings via $request object 
       $request->client = $client; 
       return $next($request); 
      } 
     } 

     abort(404); 
    } 
} 
1

Route::group(['domain' => '{alias}.'], function() { 

は、以下でそれを置き換えます

Route::group(['domain' => '{alias}.localhost'], function() { 

それはその後動作するはずです。

関連する問題