2014-11-24 28 views
0

我有2個是針對幾件事情有關的項目:1 Laravel應用,二級域名和不同的路線組

  • 用戶表
  • 設計
  • 資產
  • 功能

每個項目都有它自己的URL,用於生產環境的project1.com和project2.com,以及project1.local(或local.project1.com,我不在乎)和p roject2.local(或local.project2.com)。

我知道如何將這些網址重定向到我laravel文件夾,我不知道是清潔和安全方式告訴laravel:

  • project1.com - >使用路由組1
  • project2.com - >使用路由組2
  • project1.local - >使用路由組1
  • project2.local - >使用路由組2

另外,我想管理就像我的觀點:

  • 的意見/ PROJECT1/
  • 的意見/項目2/
  • 的意見/共享/(一些看法是共同的2個項目)

這很好,如果我不得不打電話project1.myfile這樣的路線,但也許我可以有一個var包含'project1'在路線組中使用它。

現在我已經試過這樣的

Route::group([ 
    "domain" => "project2.{extension}" 
], function($extension) 
{ 

    Route::any("/about", array(
     'as' => 'About Test', 
     'uses' => '[email protected]') 
    ); 

}); 

// Same route group for project1 

和HomeController的@ showWelcome的東西,我有:

echo URL::route('About Test'); 

此行顯示的是這樣的:http://project2.%7Bextension%7D/about,我試圖通過$擴展到路由中的功能,但同樣的事情發生。

我怎樣才能讓urls/route-groups正確安全地工作?

讚賞所有幫助/評論。

謝謝!

回答

0

您可以爲每個子域創建一個路由組,然後在每個組上使用「之前」過濾器。

Route::filter('domain1', function($request) 
{ 
    $uri = Request::path(); //this might be in $request 
    $matches = preg_match('^https?:\/\/([a-zA-Z)]+)\./', $uri); 
    $subdomain = $matches[1]; 
    Session::put('domain', $subdomain); //you can use Session::get('domain'); to retrieve this 
    //for your other conditional logic (like your views folders etc.) 
    if(!($subdomain == 'domain1')){ 
     return false; 
    } 
    //check your matches to see if your subdomain matches, if it doesn't: return false 
}); 

然後在您的路線:

Route::group(array('before' => 'domain1'), function() 
{ 
    Route::get('/', function() 
    { 
     // 
    }); 

    Route::get('something/else', '[email protected]'); 
}); 

沖洗和重複的子域2 ...等