2014-03-07 6 views
0

В настоящее время у меня есть группа маршрутизации для субдоменов и другую группу маршрутизации для основного сайта, как это:Laravel 4 - Маршрут к субдомен кроме WWW

Route::group(array('domain' => '{subdomain}.mysite.dev'), function() { 
    // Subdomain routes 
    Route::get('/', array('as' => 'home', 'uses' => '[email protected]')); 
}); 

// Main 
Route::get('/', array('as' => 'home', 'uses' => '[email protected]')); 

Это работает отлично до сих пор для обоих «mysite.dev» и для «stuff.mysite.dev» или любого другого субдомена. Проблема заключается в том, что он предполагает «www» (как в «www.mysite.dev») как субдомен, и мне нужно, чтобы он интерпретировался как основной сайт.

ответ

3

Благодаря Итачи ответ, я пришел с этим:

Route::pattern('subdomain', '^((?!www).)*$'); 

Добавление этой строки в верхней части routes.php, делает «субдомен» соответствует ничего, кроме «WWW».

Окончательная форма:

Route::pattern('subdomain', '^((?!www).)*$'); 

Route::group(array('domain' => '{subdomain}.mysite.dev'), function() { 
    // Subdomain routes 
    Route::get('/', array('as' => 'home', 'uses' => '[email protected]')); 
}); 

// Main site routes (works for mysite.dev and www.mysite.dev) 
Route::get('/', array('as' => 'home', 'uses' => '[email protected]')); 
+0

awesome! благодаря – Metra

0

1) Вы можете использовать .htaccess перенаправить WWW к не-WWW

2) проверить http://laravel.com/docs/routing для регулярных выражений ограничений, так что в конце маршрута вы добавляете -> где ('поддомена', «WWW! «); (не проверено)

+0

Я не думаю, что я могу использовать функцию где в группе без 3-расширений сторонних производителей. –

+0

Кроме того, я действительно не хочу возиться с .htaccess –

2
Route::pattern('subdomain','dev|test|mobile'); <---- add your subdomains 

Route::group(array('domain' => '{subdomain}.mysite.dev'), function() { 
    // Subdomain routes 
    Route::get('/', array('as' => 'home', 'uses' => '[email protected]')); 
}); 

// Main 
Route::get('/', array('as' => 'home', 'uses' => '[email protected]')); 

просто добавьте 1-ю строку, и все готово!

Смежные вопросы