Laravel 4 - 除了www之外的路径到子域

时间:2014-03-07 20:50:28

标签: php laravel laravel-4

目前我有一个到子域的路由组和到主站点的另一个路由组,如下所示:

Route::group(array('domain' => '{subdomain}.mysite.dev'), function() {
    // Subdomain routes
    Route::get('/', array('as' => 'home', 'uses' => 'SubdomainController@showHome'));
});

// Main
Route::get('/', array('as' => 'home', 'uses' => 'PublicController@showHome'));

到目前为止,对于'mysite.dev'和'stuff.mysite.dev'或任何其他子域都工作正常。 问题是它假设'www'(如'www.mysite.dev')作为子域,我需要将其解释为主站点。

3 个答案:

答案 0 :(得分:3)

感谢itachi的回应,我提出了这个问题:

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' => 'SubdomainController@showHome'));
});

// Main site routes (works for mysite.dev and www.mysite.dev)
Route::get('/', array('as' => 'home', 'uses' => 'PublicController@showHome'));

答案 1 :(得分: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' => 'SubdomainController@showHome'));
});

// Main
Route::get('/', array('as' => 'home', 'uses' => 'PublicController@showHome'));

只需添加第1行即可完成!

答案 2 :(得分:0)

1)您可以使用.htaccess重定向www到非www

2)检查http://laravel.com/docs/routing是否有正则表达式约束,因此在您添加的路径末尾 - > gt; where('subdomain','!www'); (未经测试)